Version Description
- 2020-09-24
Download this release
Release Info
Developer | codeinwp |
Plugin | Revive Old Posts – Auto Post to Social Media |
Version | 8.5.17 |
Comparing to | |
See all releases |
Code changes from version 8.5.15 to 8.5.17
- CHANGELOG.md +10 -0
- assets/css/rop.css +7 -7
- assets/js/build/dashboard.js +5 -1
- assets/js/build/dashboard.min.js +1 -1
- includes/admin/class-rop-admin.php +1 -1
- includes/admin/class-rop-logger.php +49 -52
- includes/admin/class-rop-rest-api.php +4 -4
- includes/admin/helpers/class-rop-log-handler.php +12 -11
- includes/admin/models/class-rop-queue-model.php +1 -1
- includes/class-rop.php +2 -2
- readme.md +12 -0
- readme.txt +12 -0
- themeisle-hash.json +1 -1
- tweet-old-post.php +2 -2
- vendor/autoload.php +1 -1
- vendor/codeinwp/themeisle-sdk/CHANGELOG.md +101 -0
- vendor/codeinwp/themeisle-sdk/load.php +1 -1
- vendor/codeinwp/themeisle-sdk/src/Loader.php +23 -2
- vendor/codeinwp/themeisle-sdk/src/Modules/Dashboard_widget.php +3 -1
- vendor/codeinwp/themeisle-sdk/src/Modules/Endpoint.php +0 -358
- vendor/codeinwp/themeisle-sdk/src/Modules/Licenser.php +336 -88
- vendor/codeinwp/themeisle-sdk/src/Modules/Logger.php +15 -13
- vendor/codeinwp/themeisle-sdk/src/Modules/Notification.php +8 -1
- vendor/codeinwp/themeisle-sdk/src/Modules/Review.php +2 -2
- vendor/codeinwp/themeisle-sdk/src/Modules/Rollback.php +1 -1
- vendor/codeinwp/themeisle-sdk/src/Modules/Translate.php +2 -2
- vendor/codeinwp/themeisle-sdk/src/Modules/Uninstall_feedback.php +9 -2
- vendor/codeinwp/themeisle-sdk/src/Product.php +4 -1
- vendor/composer/autoload_classmap.php +0 -20
- vendor/composer/autoload_files.php +0 -3
- vendor/composer/autoload_namespaces.php +1 -0
- vendor/composer/autoload_psr4.php +1 -3
- vendor/composer/autoload_real.php +5 -5
- vendor/composer/installed.json +166 -237
- vendor/firebase/php-jwt/README.md +90 -4
- vendor/firebase/php-jwt/package.xml +0 -77
- vendor/firebase/php-jwt/phpunit.xml.dist +0 -19
- vendor/firebase/php-jwt/run-tests.sh +0 -38
- vendor/firebase/php-jwt/src/BeforeValidException.php +0 -1
- vendor/firebase/php-jwt/src/ExpiredException.php +0 -1
- vendor/firebase/php-jwt/src/JWK.php +171 -0
- vendor/firebase/php-jwt/src/JWT.php +232 -77
- vendor/firebase/php-jwt/src/SignatureInvalidException.php +0 -1
- vendor/google/apiclient-services/LICENSE +203 -0
- vendor/google/apiclient-services/README.md +23 -0
- vendor/google/apiclient/CONTRIBUTING.md +0 -22
- vendor/google/apiclient/README.md +148 -45
- vendor/google/apiclient/UPGRADING.md +0 -327
- vendor/google/apiclient/examples/README.md +0 -13
- vendor/google/apiclient/examples/batch.php +0 -87
- vendor/google/apiclient/examples/idtoken.php +0 -109
- vendor/google/apiclient/examples/index.php +0 -43
- vendor/google/apiclient/examples/large-file-upload.php +0 -168
- vendor/google/apiclient/examples/multi-api.php +0 -120
- vendor/google/apiclient/examples/service-account.php +0 -72
- vendor/google/apiclient/examples/simple-file-upload.php +0 -135
- vendor/google/apiclient/examples/simple-query.php +0 -84
- vendor/google/apiclient/examples/styles/style.css +0 -117
- vendor/google/apiclient/examples/templates/base.php +0 -141
- vendor/google/apiclient/examples/url-shortener.php +0 -133
- vendor/google/apiclient/phpunit.xml.dist +0 -19
- vendor/google/apiclient/src/Google/AccessToken/Revoke.php +10 -11
- vendor/google/apiclient/src/Google/AccessToken/Verify.php +56 -16
- vendor/google/apiclient/src/Google/AuthHandler/AuthHandlerFactory.php +11 -4
- vendor/google/apiclient/src/Google/AuthHandler/Guzzle5AuthHandler.php +10 -3
- vendor/google/apiclient/src/Google/AuthHandler/Guzzle6AuthHandler.php +11 -4
- vendor/google/apiclient/src/Google/AuthHandler/Guzzle7AuthHandler.php +23 -0
- vendor/google/apiclient/src/Google/Client.php +201 -57
- vendor/google/apiclient/src/Google/Collection.php +20 -21
- vendor/google/apiclient/src/Google/Http/Batch.php +19 -9
- vendor/google/apiclient/src/Google/Http/MediaFileUpload.php +16 -14
- vendor/google/apiclient/src/Google/Http/REST.php +8 -3
- vendor/google/apiclient/src/Google/Model.php +37 -28
- vendor/google/apiclient/src/Google/Service/Exception.php +0 -1
- vendor/google/apiclient/src/Google/Service/Resource.php +10 -4
- vendor/google/apiclient/src/Google/Task/Composer.php +104 -0
- vendor/google/apiclient/src/Google/Task/Runner.php +4 -7
- vendor/google/apiclient/style/ruleset.xml +0 -159
- vendor/google/auth/CHANGELOG.md +159 -0
- vendor/google/auth/CODE_OF_CONDUCT.md +43 -0
- vendor/google/auth/CONTRIBUTING.md +0 -73
- vendor/google/auth/README.md +41 -5
CHANGELOG.md
CHANGED
@@ -1,4 +1,14 @@
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
### v8.5.15 - 2020-09-09
|
3 |
**Changes:**
|
4 |
* Change: Require at least PHP 7.1
|
1 |
|
2 |
+
### v8.5.17 - 2020-09-24
|
3 |
+
**Changes:**
|
4 |
+
* Dev: Add post-install command to composer.json
|
5 |
+
|
6 |
+
### v8.5.16 - 2020-09-23
|
7 |
+
**Changes:**
|
8 |
+
* Info: Update Google My Business dependency version
|
9 |
+
* Info: Update Themeisle SDK dependency version
|
10 |
+
* Change: Dropped monolog dependency in favor of custom logging methods
|
11 |
+
|
12 |
### v8.5.15 - 2020-09-09
|
13 |
**Changes:**
|
14 |
* Change: Require at least PHP 7.1
|
assets/css/rop.css
CHANGED
@@ -471,31 +471,31 @@
|
|
471 |
border-left-color: #fff;
|
472 |
}
|
473 |
|
474 |
-
#rop_core .btn.btn-
|
475 |
border-color: #0071a6;
|
476 |
color: #fff;
|
477 |
background: #323b43;
|
478 |
}
|
479 |
|
480 |
-
#rop_core .btn.btn-
|
481 |
box-shadow: 0 0 0 0.1rem rgba(0, 123, 181, 0.2);
|
482 |
}
|
483 |
|
484 |
-
#rop_core .btn.btn-
|
485 |
-
#rop_core .btn.btn-
|
486 |
border-color: #006a9c;
|
487 |
color: #fff;
|
488 |
background: #0074ab;
|
489 |
}
|
490 |
|
491 |
-
#rop_core .btn.btn-
|
492 |
-
#rop_core .btn.btn-
|
493 |
border-color: #005882;
|
494 |
color: #fff;
|
495 |
background: #006391;
|
496 |
}
|
497 |
|
498 |
-
#rop_core .btn.btn-
|
499 |
border-bottom-color: #fff;
|
500 |
border-left-color: #fff;
|
501 |
}
|
471 |
border-left-color: #fff;
|
472 |
}
|
473 |
|
474 |
+
#rop_core .btn.btn-gmb {
|
475 |
border-color: #0071a6;
|
476 |
color: #fff;
|
477 |
background: #323b43;
|
478 |
}
|
479 |
|
480 |
+
#rop_core .btn.btn-gmb:focus {
|
481 |
box-shadow: 0 0 0 0.1rem rgba(0, 123, 181, 0.2);
|
482 |
}
|
483 |
|
484 |
+
#rop_core .btn.btn-gmb:focus,
|
485 |
+
#rop_core .btn.btn-gmb:hover {
|
486 |
border-color: #006a9c;
|
487 |
color: #fff;
|
488 |
background: #0074ab;
|
489 |
}
|
490 |
|
491 |
+
#rop_core .btn.btn-gmb:active,
|
492 |
+
#rop_core .btn.btn-gmb.active {
|
493 |
border-color: #005882;
|
494 |
color: #fff;
|
495 |
background: #006391;
|
496 |
}
|
497 |
|
498 |
+
#rop_core .btn.btn-gmb.loading::after {
|
499 |
border-bottom-color: #fff;
|
500 |
border-left-color: #fff;
|
501 |
}
|
assets/js/build/dashboard.js
CHANGED
@@ -40322,7 +40322,7 @@ exports = module.exports = __webpack_require__(1)();
|
|
40322 |
|
40323 |
|
40324 |
// module
|
40325 |
-
exports.push([module.i, "\n\t#rop_core .toast.log-toast p[_v-ed733db4] {\n\t\tmargin: 0px;\n\t\tline-height: inherit;\n\t}\n\n\t#rop_core .toast.log-toast[_v-ed733db4]:hover {\n\t\topacity: 0.9;\n\t}\n\n\t#rop_core .toast.log-toast[_v-ed733db4] {\n\t\tpadding: 0.1rem;\n\t\tpadding-left: 10px;\n\t\tmargin-top: 2px;\n\t}\n\n\t#rop_core .container[_v-ed733db4] {\n\t\tmin-height: 400px;\n\t}\n", ""]);
|
40326 |
|
40327 |
// exports
|
40328 |
|
@@ -40425,6 +40425,10 @@ module.exports = {
|
|
40425 |
// #rop_core .container {
|
40426 |
// min-height: 400px;
|
40427 |
// }
|
|
|
|
|
|
|
|
|
40428 |
// </style>
|
40429 |
//
|
40430 |
|
40322 |
|
40323 |
|
40324 |
// module
|
40325 |
+
exports.push([module.i, "\n\t#rop_core .toast.log-toast p[_v-ed733db4] {\n\t\tmargin: 0px;\n\t\tline-height: inherit;\n\t}\n\n\t#rop_core .toast.log-toast[_v-ed733db4]:hover {\n\t\topacity: 0.9;\n\t}\n\n\t#rop_core .toast.log-toast[_v-ed733db4] {\n\t\tpadding: 0.1rem;\n\t\tpadding-left: 10px;\n\t\tmargin-top: 2px;\n\t}\n\n\t#rop_core .container[_v-ed733db4] {\n\t\tmin-height: 400px;\n\t}\n\n\t.columns[_v-ed733db4] {\n\t\tline-break: anywhere;\n\t}\n", ""]);
|
40326 |
|
40327 |
// exports
|
40328 |
|
40425 |
// #rop_core .container {
|
40426 |
// min-height: 400px;
|
40427 |
// }
|
40428 |
+
//
|
40429 |
+
// .columns {
|
40430 |
+
// line-break: anywhere;
|
40431 |
+
// }
|
40432 |
// </style>
|
40433 |
//
|
40434 |
|
assets/js/build/dashboard.min.js
CHANGED
@@ -13,7 +13,7 @@ var Y=function(t){function e(){var t=this.$options;t.store?this.$store="function
|
|
13 |
* https://github.com/pagekit/vue-resource
|
14 |
* Released under the MIT License.
|
15 |
*/
|
16 |
-
var ot=2;a.reject=function(t){return new a(function(e,n){n(t)})},a.resolve=function(t){return new a(function(e,n){e(t)})},a.all=function(t){return new a(function(e,n){var s=0,i=[];0===t.length&&e(i);for(var r=0;r<t.length;r+=1)a.resolve(t[r]).then(function(n){return function(a){i[n]=a,(s+=1)===t.length&&e(i)}}(r),n)})},a.race=function(t){return new a(function(e,n){for(var s=0;s<t.length;s+=1)a.resolve(t[s]).then(e,n)})};var dt=a.prototype;dt.resolve=function(t){var e=this;if(e.state===ot){if(t===e)throw new TypeError("Promise settled with itself.");var n=!1;try{var a=t&&t.then;if(null!==t&&"object"==typeof t&&"function"==typeof a)return void a.call(t,function(t){n||e.resolve(t),n=!0},function(t){n||e.reject(t),n=!0})}catch(t){return void(n||e.reject(t))}e.state=0,e.value=t,e.notify()}},dt.reject=function(t){var e=this;if(e.state===ot){if(t===e)throw new TypeError("Promise settled with itself.");e.state=1,e.value=t,e.notify()}},dt.notify=function(){var t=this;d(function(){if(t.state!==ot)for(;t.deferred.length;){var e=t.deferred.shift(),n=e[0],a=e[1],s=e[2],i=e[3];try{0===t.state?s("function"==typeof n?n.call(void 0,t.value):t.value):1===t.state&&("function"==typeof a?s(a.call(void 0,t.value)):i(t.value))}catch(t){i(t)}}})},dt.then=function(t,e){var n=this;return new a(function(a,s){n.deferred.push([t,e,a,s]),n.notify()})},dt.catch=function(t){return this.then(void 0,t)},"undefined"==typeof Promise&&(window.Promise=a),s.all=function(t,e){return new s(Promise.all(t),e)},s.resolve=function(t,e){return new s(Promise.resolve(t),e)},s.reject=function(t,e){return new s(Promise.reject(t),e)},s.race=function(t,e){return new s(Promise.race(t),e)};var lt=s.prototype;lt.bind=function(t){return this.context=t,this},lt.then=function(t,e){return t&&t.bind&&this.context&&(t=t.bind(this.context)),e&&e.bind&&this.context&&(e=e.bind(this.context)),new s(this.promise.then(t,e),this.context)},lt.catch=function(t){return t&&t.bind&&this.context&&(t=t.bind(this.context)),new s(this.promise.catch(t),this.context)},lt.finally=function(t){return this.then(function(e){return t.call(this),e},function(e){return t.call(this),Promise.reject(e)})};var ut,ct={},_t=ct.hasOwnProperty,mt=[],ft=mt.slice,pt=!1,ht="undefined"!=typeof window,vt=Array.isArray,yt=Object.assign||Y;E.options={url:"",root:null,params:{}},E.transform={template:$,query:T,root:D},E.transforms=["template","query","root"],E.params=function(t){var e=[],n=encodeURIComponent;return e.add=function(t,e){f(e)&&(e=e()),null===e&&(e=""),this.push(n(t)+"="+n(e))},W(e,t),e.join("&").replace(/%20/g,"+")},E.parse=function(t){var e=document.createElement("a");return document.documentMode&&(e.href=t,t=e.href),e.href=t,{href:e.href,protocol:e.protocol?e.protocol.replace(/:$/,""):"",port:e.port,host:e.host,hostname:e.hostname,pathname:"/"===e.pathname.charAt(0)?e.pathname:"/"+e.pathname,search:e.search?e.search.replace(/^\?/,""):"",hash:e.hash?e.hash.replace(/^#/,""):""}};var gt=ht&&"withCredentials"in new XMLHttpRequest,Mt=function(t){var e=this;this.map={},L(t,function(t,n){return e.append(n,t)})};Mt.prototype.has=function(t){return null!==Q(this.map,t)},Mt.prototype.get=function(t){var e=this.map[Q(this.map,t)];return e?e.join():null},Mt.prototype.getAll=function(t){return this.map[Q(this.map,t)]||[]},Mt.prototype.set=function(t,e){this.map[tt(Q(this.map,t)||t)]=[l(e)]},Mt.prototype.append=function(t,e){var n=this.map[Q(this.map,t)];n?n.push(l(e)):this.set(t,e)},Mt.prototype.delete=function(t){delete this.map[Q(this.map,t)]},Mt.prototype.deleteAll=function(){this.map={}},Mt.prototype.forEach=function(t,e){var n=this;L(this.map,function(a,s){L(a,function(a){return t.call(e,a,s,n)})})};var Lt=function(t,e){var n=e.url,a=e.headers,s=e.status,i=e.statusText;this.url=n,this.ok=s>=200&&s<300,this.status=s||0,this.statusText=i||"",this.headers=new Mt(a),this.body=t,m(t)?this.bodyText=t:v(t)&&(this.bodyBlob=t,nt(t)&&(this.bodyText=et(t)))};Lt.prototype.blob=function(){return g(this.bodyBlob)},Lt.prototype.text=function(){return g(this.bodyText)},Lt.prototype.json=function(){return g(this.text(),function(t){return JSON.parse(t)})},Object.defineProperty(Lt.prototype,"data",{get:function(){return this.body},set:function(t){this.body=t}});var bt=function(t){this.body=null,this.params={},yt(this,t,{method:_(t.method||"GET")}),this.headers instanceof Mt||(this.headers=new Mt(this.headers))};bt.prototype.getUrl=function(){return E(this)},bt.prototype.getBody=function(){return this.body},bt.prototype.respondWith=function(t,e){return new Lt(t,yt(e||{},{url:this.getUrl()}))};var kt={Accept:"application/json, text/plain, */*"},Yt={"Content-Type":"application/json;charset=utf-8"};at.options={},at.headers={put:Yt,post:Yt,patch:Yt,delete:Yt,common:kt,custom:{}},at.interceptor={before:U,method:G,jsonp:V,json:z,form:I,header:q,cors:N},at.interceptors=["before","method","jsonp","json","form","header","cors"],["get","delete","head","jsonp"].forEach(function(t){at[t]=function(e,n){return this(yt(n||{},{url:e,method:t}))}}),["post","put","patch"].forEach(function(t){at[t]=function(e,n,a){return this(yt(a||{},{url:e,method:t,body:n}))}}),st.actions={get:{method:"GET"},save:{method:"POST"},query:{method:"GET"},update:{method:"PUT"},remove:{method:"DELETE"},delete:{method:"DELETE"}},"undefined"!=typeof window&&window.Vue&&window.Vue.use(rt),e.default=rt},function(t,e){},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n(39),s=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default={install:s.default.install}},function(t,e,n){"use strict";function a(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){function t(t,n){var a={};return n.forEach(function(s){n.indexOf(s)>=n.indexOf(t.logLevel)?a[s]=function(){for(var n=arguments.length,a=Array(n),r=0;r<n;r++)a[r]=arguments[r];var o=i(),d=t.showMethodName?o+" "+t.separator+" ":"",l=t.showLogLevel?s+" "+t.separator+" ":"",u=t.stringifyArguments?a.map(function(t){return JSON.stringify(t)}):a;e(s,l,d,u,t.showConsoleColors)}:a[s]=function(){}}),a}function e(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(arguments.length>4&&void 0!==arguments[4]&&arguments[4]&&("warn"===t||"error"===t||"fatal"===t)){var i;(i=console)["fatal"===t?"error":t].apply(i,[e,n].concat(a(s)))}else{var r;(r=console).log.apply(r,[e,n].concat(a(s)))}}function n(t,e){return!(!(t.logLevel&&"string"==typeof t.logLevel&&e.indexOf(t.logLevel)>-1)||t.stringifyArguments&&"boolean"!=typeof t.stringifyArguments||t.showLogLevel&&"boolean"!=typeof t.showLogLevel||t.showConsoleColors&&"boolean"!=typeof t.showConsoleColors||t.separator&&("string"!=typeof t.separator||"string"==typeof t.separator&&t.separator.length>3)||t.showMethodName&&"boolean"!=typeof t.showMethodName)}function s(e,a){if(a=Object.assign(r,a),!n(a,o))throw new Error("Provided options for vuejs-logger are not valid.");e.$log=t(a,o),e.prototype.$log=e.$log}function i(){var t={};try{throw new Error("")}catch(e){t=e}var e=t.stack.split("\n")[3];return/ /.test(e)&&(e=e.trim().split(" ")[1]),e&&e.includes(".")&&(e=e.split(".")[1]),e}var r={logLevel:"debug",separator:"|",stringifyArguments:!1,showLogLevel:!1,showMethodName:!1,showConsoleColors:!1},o=["debug","info","warn","error","fatal"];return{install:s,isValidOptions:n,print:e,initLoggerInstance:t,logLevels:o}}()},function(t,e,n){var a=n(9),s=n(14),i=n(42)(!1),r=n(19)("IE_PROTO");t.exports=function(t,e){var n,o=s(t),d=0,l=[];for(n in o)n!=r&&a(o,n)&&l.push(n);for(;e.length>d;)a(o,n=e[d++])&&(~i(l,n)||l.push(n));return l}},function(t,e,n){var a=n(22);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==a(t)?t.split(""):Object(t)}},function(t,e,n){var a=n(14),s=n(43),i=n(44);t.exports=function(t){return function(e,n,r){var o,d=a(e),l=s(d.length),u=i(r,l);if(t&&n!=n){for(;l>u;)if((o=d[u++])!=o)return!0}else for(;l>u;u++)if((t||u in d)&&d[u]===n)return t||u||0;return!t&&-1}}},function(t,e,n){var a=n(15),s=Math.min;t.exports=function(t){return t>0?s(a(t),9007199254740991):0}},function(t,e,n){var a=n(15),s=Math.max,i=Math.min;t.exports=function(t,e){return t=a(t),t<0?s(t+e,0):i(t,e)}},function(t,e,n){var a=n(46);t.exports=function(t,e,n){if(a(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,a){return t.call(e,n,a)};case 3:return function(n,a,s){return t.call(e,n,a,s)}}return function(){return t.apply(e,arguments)}}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,n){t.exports=!n(5)&&!n(17)(function(){return 7!=Object.defineProperty(n(27)("div"),"a",{get:function(){return 7}}).a})},function(t,e,n){var a=n(12);t.exports=function(t,e){if(!a(t))return t;var n,s;if(e&&"function"==typeof(n=t.toString)&&!a(s=n.call(t)))return s;if("function"==typeof(n=t.valueOf)&&!a(s=n.call(t)))return s;if(!e&&"function"==typeof(n=t.toString)&&!a(s=n.call(t)))return s;throw TypeError("Can't convert object to primitive value")}},function(t,e,n){t.exports={default:n(56),__esModule:!0}},function(t,e,n){"use strict";var a=n(24),s=n(21),i=n(61),r=n(6),o=n(20),d=n(62),l=n(51),u=n(66),c=n(7)("iterator"),_=!([].keys&&"next"in[].keys()),m=function(){return this};t.exports=function(t,e,n,f,p,h,v){d(n,e,f);var y,g,M,L=function(t){if(!_&&t in w)return w[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},b=e+" Iterator",k="values"==p,Y=!1,w=t.prototype,D=w[c]||w["@@iterator"]||p&&w[p],T=D||L(p),x=p?k?L("entries"):T:void 0,S="Array"==e?w.entries||D:D;if(S&&(M=u(S.call(new t)))!==Object.prototype&&M.next&&(l(M,b,!0),a||"function"==typeof M[c]||r(M,c,m)),k&&D&&"values"!==D.name&&(Y=!0,T=function(){return D.call(this)}),a&&!v||!_&&!Y&&w[c]||r(w,c,T),o[e]=T,o[b]=m,p)if(y={values:k?T:L("values"),keys:h?T:L("keys"),entries:x},v)for(g in y)g in w||i(w,g,y[g]);else s(s.P+s.F*(_||Y),e,y);return y}},function(t,e,n){var a=n(16).f,s=n(9),i=n(7)("toStringTag");t.exports=function(t,e,n){t&&!s(t=n?t:t.prototype,i)&&a(t,i,{configurable:!0,value:e})}},function(t,e,n){var a,s;a=n(72),s=n(74),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){n(54),t.exports=n(3).Object.keys},function(t,e,n){var a=n(29),s=n(30);n(55)("keys",function(){return function(t){return s(a(t))}})},function(t,e,n){var a=n(21),s=n(3),i=n(17);t.exports=function(t,e){var n=(s.Object||{})[t]||Object[t],r={};r[t]=e(n),a(a.S+a.F*i(function(){n(1)}),"Object",r)}},function(t,e,n){n(57),n(67),t.exports=n(69)},function(t,e,n){n(58);for(var a=n(4),s=n(6),i=n(20),r=n(7)("toStringTag"),o="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),d=0;d<o.length;d++){var l=o[d],u=a[l],c=u&&u.prototype;c&&!c[r]&&s(c,r,l),i[l]=i.Array}},function(t,e,n){"use strict";var a=n(59),s=n(60),i=n(20),r=n(14);t.exports=n(50)(Array,"Array",function(t,e){this._t=r(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,s(1)):"keys"==e?s(0,n):"values"==e?s(0,t[n]):s(0,[n,t[n]])},"values"),i.Arguments=i.Array,a("keys"),a("values"),a("entries")},function(t,e){t.exports=function(){}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,n){t.exports=n(6)},function(t,e,n){"use strict";var a=n(63),s=n(28),i=n(51),r={};n(6)(r,n(7)("iterator"),function(){return this}),t.exports=function(t,e,n){t.prototype=a(r,{next:s(1,n)}),i(t,e+" Iterator")}},function(t,e,n){var a=n(11),s=n(64),i=n(26),r=n(19)("IE_PROTO"),o=function(){},d=function(){var t,e=n(27)("iframe"),a=i.length;for(e.style.display="none",n(65).appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write("<script>document.F=Object<\/script>"),t.close(),d=t.F;a--;)delete d.prototype[i[a]];return d()};t.exports=Object.create||function(t,e){var n;return null!==t?(o.prototype=a(t),n=new o,o.prototype=null,n[r]=t):n=d(),void 0===e?n:s(n,e)}},function(t,e,n){var a=n(16),s=n(11),i=n(30);t.exports=n(5)?Object.defineProperties:function(t,e){s(t);for(var n,r=i(e),o=r.length,d=0;o>d;)a.f(t,n=r[d++],e[n]);return t}},function(t,e,n){var a=n(4).document;t.exports=a&&a.documentElement},function(t,e,n){var a=n(9),s=n(29),i=n(19)("IE_PROTO"),r=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=s(t),a(t,i)?t[i]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?r:null}},function(t,e,n){"use strict";var a=n(68)(!0);n(50)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=a(e,n),this._i+=t.length,{value:t,done:!1})})},function(t,e,n){var a=n(15),s=n(13);t.exports=function(t){return function(e,n){var i,r,o=String(s(e)),d=a(n),l=o.length;return d<0||d>=l?t?"":void 0:(i=o.charCodeAt(d),i<55296||i>56319||d+1===l||(r=o.charCodeAt(d+1))<56320||r>57343?t?o.charAt(d):i:t?o.slice(d,d+2):r-56320+(i-55296<<10)+65536)}}},function(t,e,n){var a=n(11),s=n(70);t.exports=n(3).getIterator=function(t){var e=s(t);if("function"!=typeof e)throw TypeError(t+" is not iterable!");return a(e.call(t))}},function(t,e,n){var a=n(71),s=n(7)("iterator"),i=n(20);t.exports=n(3).getIteratorMethod=function(t){if(void 0!=t)return t[s]||t["@@iterator"]||i[a(t)]}},function(t,e,n){var a=n(22),s=n(7)("toStringTag"),i="Arguments"==a(function(){return arguments}()),r=function(t,e){try{return t[e]}catch(t){}};t.exports=function(t){var e,n,o;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=r(e=Object(t),s))?n:i?a(e):"Object"==(o=a(e))&&"function"==typeof e.callee?"Arguments":o}},function(t,e,n){"use strict";function a(t,e){var n=void 0;for(n=0;n<e.length;n++)if(e[n]===t)return!0;return!1}var s=n(49),i=function(t){return t&&t.__esModule?t:{default:t}}(s),r=n(73);t.exports={name:"multiple-select",mixins:[r.mixin],props:{options:{default:function(){return[]},type:Array},disabled:{default:!0,type:Boolean},selected:{default:function(){return[]},type:Array},placeHolderText:{default:"Please select something",type:String},changedSelection:{default:function(t){return t},type:Function},dontLock:{default:!1,type:Boolean},is_pro_version:{default:!1,type:Boolean},apply_limit:{default:!1,type:Boolean}},mounted:function(){var t=!0,e=!1,n=void 0;try{for(var a,s=(0,i.default)(this.selected);!(t=(a=s.next()).done);t=!0){var r=a.value;if(r.selected){var o=0,d=!0,l=!1,u=void 0;try{for(var c,_=(0,i.default)(this.options);!(d=(c=_.next()).done);d=!0){c.value.value===r.value&&(this.options[o].selected=r.selected),o++}}catch(t){l=!0,u=t}finally{try{!d&&_.return&&_.return()}finally{if(l)throw u}}}}}catch(t){e=!0,n=t}finally{try{!t&&s.return&&s.return()}finally{if(e)throw n}}},updated:function(){var t=!0,e=!1,n=void 0;try{for(var a,s=(0,i.default)(this.selected);!(t=(a=s.next()).done);t=!0){var r=a.value;if(r.selected){var o=0,d=!0,l=!1,u=void 0;try{for(var c,_=(0,i.default)(this.options);!(d=(c=_.next()).done);d=!0){c.value.value===r.value&&(this.options[o].selected=r.selected),o++}}catch(t){l=!0,u=t}finally{try{!d&&_.return&&_.return()}finally{if(l)throw u}}}}}catch(t){e=!0,n=t}finally{try{!t&&s.return&&s.return()}finally{if(e)throw n}}},created:function(){var t=0,e=!0,n=!1,a=void 0;try{for(var s,r=(0,i.default)(this.selected);!(e=(s=r.next()).done);e=!0){var o=s.value;if(o.selected){var d=0,l=!0,u=!1,c=void 0;try{for(var _,m=(0,i.default)(this.options);!(l=(_=m.next()).done);l=!0){_.value.value===o.value&&(this.options[d].selected=o.selected,t++),d++}}catch(t){u=!0,c=t}finally{try{!l&&m.return&&m.return()}finally{if(u)throw c}}}}}catch(t){n=!0,a=t}finally{try{!e&&r.return&&r.return()}finally{if(n)throw a}}this.rand=Math.round(1e3*Math.random());var f=0,p=!0,h=!1,v=void 0;try{for(var y,g=(0,i.default)(this.options);!(p=(y=g.next()).done);p=!0){y.value;this.options[f].selected=!1,f++}}catch(t){h=!0,v=t}finally{try{!p&&g.return&&g.return()}finally{if(h)throw v}}},data:function(){return{search:"",highlighted:-1,no_results:!1,labels:this.$store.state.labels.general,upsell_link:ropApiSettings.upsell_link,magic_flag:!1,rand:0}},watch:{search:function(t){this.$emit("update",t)},selected:function(t){this.$emit("display-limiter-notice",this.selected.length)}},computed:{is_focused:function(){return{"is-focused":!0===this.magic_flag}},is_visible:function(){return{"d-none":!1===this.magic_flag}},is_one:function(){if(!this.dontLock){if(1===this.options.length&&!1===this.options[0].selected)return!0;if(1===this.options.length&&!0===this.options[0].selected)return!0}return!1},autocomplete_placeholder:function(){return this.selected.length>0?"":this.placeHolderText},is_disabled:function(){return!this.disabled},has_results:function(){var t=0,e=!0,n=!1,a=void 0;try{for(var s,r=(0,i.default)(this.options);!(e=(s=r.next()).done);e=!0){var o=s.value;this.filterSearch(o)&&t++}}catch(t){n=!0,a=t}finally{try{!e&&r.return&&r.return()}finally{if(n)throw a}}return!t}},methods:{closeDropdown:function(){this.magic_flag=!1},highlightItem:function(){arguments.length>0&&void 0!==arguments[0]&&arguments[0]?this.highlighted--:this.highlighted++;var t=this.$refs.autocomplete_results.children.length-1;t<0&&(t=0),this.highlighted>t&&(this.highlighted=0),this.highlighted<0&&(this.highlighted=t),this.$refs.autocomplete_results.children[this.highlighted].firstChild.focus()},popLast:function(){""===this.search&&(this.selected.pop(),this.magic_flag=!1)},markMatch:function(t,e){var n=t;if(-1!==t.toLowerCase().indexOf(e.toLowerCase())&&""!==e){var a=new RegExp(e,"ig");n=t.replace(a,function(t){return"<mark>"+t+"</mark>"})}return n},filterSearch:function(t){return(-1!==t.name.toLowerCase().indexOf(this.search.toLowerCase())||""===this.search)&&(!t.selected&&!a(t,this.selected))},addToSelected:function(t){if(!this.is_disabled&&!1!==this.limit_selection()){var e=this.options[t];e.selected=!0,this.selected.push(e),this.$refs.search.focus(),this.magic_flag=!1,this.search="",this.changedSelection(this.selected)}},removeSelected:function(t){this.is_disabled||(this.selected.splice(t,1),this.$refs.search.focus(),this.magic_flag=!1,this.search="",this.changedSelection(this.selected))},limit_selection:function(){return!(!0===this.apply_limit&&!1===this.is_pro_version&&this.selected.length>3)||(this.$refs.search.focus(),this.magic_flag=!1,this.search="",!1)}}}},function(t,e,n){"use strict";function a(t,e,n){s(t);var a=n.context,i=e.value;if("function"==typeof i){var o=!1;setTimeout(function(){o=!0},0),t[r]=function(e){var n=e.path||(e.composedPath?e.composedPath():void 0);if(o&&(n?n.indexOf(t)<0:!t.contains(e.target)))return i.call(a,e)},document.documentElement.addEventListener("click",t[r],!1)}}function s(t){document.documentElement.removeEventListener("click",t[r],!1),delete t[r]}var i=n(8);i="default"in i?i.default:i;/^2\./.test(i.version)||i.util.warn("VueClickaway 2.2.2 only supports Vue 2.x, and does not support Vue "+i.version);var r="_vue_clickaway_handler",o={bind:a,update:function(t,e){e.value!==e.oldValue&&a(t,e)},unbind:s},d={directives:{onClickaway:o}};e.version="2.2.2",e.directive=o,e.mixin=d},function(t,e){t.exports='\n\t<div class="form-autocomplete" style="width: 100%;" v-on-clickaway="closeDropdown">\n\t\t\x3c!-- autocomplete input container --\x3e\n\t\t<div class="form-autocomplete-input form-input" :class="is_focused">\n\t\t\t\n\t\t\t\x3c!-- autocomplete chips --\x3e\n\t\t\t<label class="chip" v-for="( option, index ) in selected">\n\t\t\t\t{{option.name}}\n\t\t\t\t<a href="#" class="btn btn-clear" aria-label="Close" @click.prevent="removeSelected(index)"\n\t\t\t\t role="button"></a>\n\t\t\t</label>\n\t\t\t\n\t\t\t\x3c!-- autocomplete real input box --\x3e\n\t\t\t<input style="height: 1.0rem;" class="form-input" type="text" ref="search" v-model="search"\n\t\t\t :placeholder="autocomplete_placeholder" @click="magic_flag = true" @focus="magic_flag = true"\n\t\t\t @keyup="magic_flag = true" @keydown.8="popLast()" @keydown.38="highlightItem(true)"\n\t\t\t @keydown.40="highlightItem()" :disabled="is_disabled">\n\t\t</div>\n\t\t\n\t\t\x3c!-- autocomplete suggestion list --\x3e\n\t\t<ul class="menu" ref="autocomplete_results" :class="is_visible"\n\t\t style="overflow-y: scroll; max-height: 120px">\n\t\t\t\x3c!-- menu list chips --\x3e\n\t\t\t<li class="menu-item" v-for="( option, index ) in options" v-if="filterSearch(option)">\n\t\t\t\t<a href="#" @click.prevent="addToSelected(index)" @keydown.38="highlightItem(true)"\n\t\t\t\t @keydown.40="highlightItem()">\n\t\t\t\t\t<div class="tile tile-centered">\n\t\t\t\t\t\t<div class="tile-content" v-html="markMatch(option.name, search)"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t\t<li v-if="has_results">\n\t\t\t\t<a href="#">\n\t\t\t\t\t<div class="tile tile-centered">\n\t\t\t\t\t\t<div class="tile-content"><i>{{labels.multiselect_not_found}}"{{search}}" ...</i></div>\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t</ul>\n\t</div>\n\n'},function(t,e,n){var a,s;n(76),a=n(78),s=n(79),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(77);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n\t#rop_core .input-group .input-group-addon.btn.active[_v-1c9c2ce2] {\n\t\tbackground-color: #8bc34a;\n\t\tborder-color: #33691e;\n\t\tcolor: #FFF;\n\t}\n",""])},function(t,e,n){"use strict";t.exports={name:"button-checkbox",props:{value:{default:"0",type:String},label:{default:"",type:String},id:{default:function(){var t="day";return""!==this.label&&void 0!==this.label&&(t=t+"_"+this.label.toLowerCase()),t}},checked:{default:!1,type:Boolean}},data:function(){return{componentCheckState:this.checked}},computed:{is_active:function(){return{active:!0===this.componentCheckState}}},watch:{checked:function(){this.componentCheckState=this.checked}},methods:{toggleThis:function(){this.componentCheckState=!this.componentCheckState,this.componentCheckState?this.$emit("add-day",this.value):this.$emit("rmv-day",this.value)}}}},function(t,e){t.exports='\n\t<button class="btn input-group-addon column" :class="is_active" @click="toggleThis()" _v-1c9c2ce2="">{{label}}</button>\n'},function(t,e,n){var a,s;n(81),a=n(83),s=n(84),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(82);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n\t#rop-upsell-box[_v-4cbae0f4]{\n\t\tmargin-top:20px;\n\t}\n\t#rop_core .rop-upsell-business-card[_v-4cbae0f4],\n\t#rop_core .rop-upsell-pro-card[_v-4cbae0f4] {\n\t\tpadding: 0;\n\t}\n",""])},function(t,e,n){"use strict";t.exports={name:"upsell-sidebar",data:function(){return{license:this.$store.state.licence,upsell_link:ropApiSettings.upsell_link,to_pro_upsell:ROP_ASSETS_URL+"img/to_pro.png",labels:this.$store.state.labels.general,to_business_upsell:ROP_ASSETS_URL+"img/to_business.png"}}}},function(t,e){t.exports='\n\t<div id="rop-upsell-box" _v-4cbae0f4="">\n\t\t<div class="card rop-upsell-pro-card" v-if="license < 1 " _v-4cbae0f4="">\n\t\t\t<a :href="upsell_link" target="_blank" _v-4cbae0f4="">\n\t\t\t\t<img class="img-responsive" :src="to_pro_upsell" :alt="labels.upgrade_pro_cta" _v-4cbae0f4="">\n\t\t\t</a>\n\t\t</div>\n\t\t<div class="card rop-upsell-business-card" v-if="license === 1" _v-4cbae0f4="">\n\t\t\t<a :href="upsell_link" target="_blank" _v-4cbae0f4="">\n\t\t\t\t<img class="img-responsive" :src="to_business_upsell" :alt="labels.upgrade_biz_cta" _v-4cbae0f4="">\n\t\t\t</a>\n\t\t</div>\n\t</div>\n'},function(t,e,n){var a,s;n(223),a=n(225),s=n(226),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a,s;n(252),a=n(254),s=n(255),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(t){return/^nm$/i.test(t)},meridiem:function(t,e,n){return t<12?n?"vm":"VM":n?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},a=function(t){return 0===t?0:1===t?1:2===t?2:t%100>=3&&t%100<=10?3:t%100>=11?4:5},s={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},i=function(t){return function(e,n,i,r){var o=a(e),d=s[t][a(e)];return 2===o&&(d=d[n?0:1]),d.replace(/%d/i,e)}},r=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];return t.defineLocale("ar",{months:r,monthsShort:r,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(t){return"م"===t},meridiem:function(t,e,n){return t<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:i("s"),ss:i("s"),m:i("m"),mm:i("m"),h:i("h"),hh:i("h"),d:i("d"),dd:i("d"),M:i("M"),MM:i("M"),y:i("y"),yy:i("y")},preparse:function(t){return t.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(t){return n[t]}).replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]}).replace(/,/g,"،")},week:{dow:6,doy:12}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("ar-dz",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"أح_إث_ثلا_أر_خم_جم_سب".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},n=function(t){return 0===t?0:1===t?1:2===t?2:t%100>=3&&t%100<=10?3:t%100>=11?4:5},a={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},s=function(t){return function(e,s,i,r){var o=n(e),d=a[t][n(e)];return 2===o&&(d=d[s?0:1]),d.replace(/%d/i,e)}},i=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];return t.defineLocale("ar-ly",{months:i,monthsShort:i,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(t){return"م"===t},meridiem:function(t,e,n){return t<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:s("s"),ss:s("s"),m:s("m"),mm:s("m"),h:s("h"),hh:s("h"),d:s("d"),dd:s("d"),M:s("M"),MM:s("M"),y:s("y"),yy:s("y")},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]}).replace(/,/g,"،")},week:{dow:6,doy:12}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};return t.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(t){return"م"===t},meridiem:function(t,e,n){return t<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(t){return t.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(t){return n[t]}).replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]}).replace(/,/g,"،")},week:{dow:0,doy:6}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"};return t.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"birneçə saniyə",ss:"%d saniyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(t){return/^(gündüz|axşam)$/.test(t)},meridiem:function(t,e,n){return t<4?"gecə":t<12?"səhər":t<17?"gündüz":"axşam"},dayOfMonthOrdinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(t){if(0===t)return t+"-ıncı";var n=t%10,a=t%100-n,s=t>=100?100:null;return t+(e[n]||e[a]||e[s])},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e){var n=t.split("_");return e%10==1&&e%100!=11?n[0]:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?n[1]:n[2]}function n(t,n,a){var s={ss:n?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:n?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:n?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"};return"m"===a?n?"хвіліна":"хвіліну":"h"===a?n?"гадзіна":"гадзіну":t+" "+e(s[a],+t)}return t.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:n,mm:n,h:n,hh:n,d:"дзень",dd:n,M:"месяц",MM:n,y:"год",yy:n},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(t){return/^(дня|вечара)$/.test(t)},meridiem:function(t,e,n){return t<4?"ночы":t<12?"раніцы":t<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(t,e){switch(e){case"M":case"d":case"DDD":case"w":case"W":return t%10!=2&&t%10!=3||t%100==12||t%100==13?t+"-ы":t+"-і";case"D":return t+"-га";default:return t}},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(t){var e=t%10,n=t%100;return 0===t?t+"-ев":0===n?t+"-ен":n>10&&n<20?t+"-ти":1===e?t+"-ви":2===e?t+"-ри":7===e||8===e?t+"-ми":t+"-ти"},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des".split("_"),weekdays:"Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm"},calendar:{sameDay:"[Bi lɛrɛ] LT",nextDay:"[Sini lɛrɛ] LT",nextWeek:"dddd [don lɛrɛ] LT",lastDay:"[Kunu lɛrɛ] LT",lastWeek:"dddd [tɛmɛnen lɛrɛ] LT",sameElse:"L"},relativeTime:{future:"%s kɔnɔ",past:"a bɛ %s bɔ",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"lɛrɛ kelen",hh:"lɛrɛ %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},n={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};return t.defineLocale("bn",{months:"জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(t){return t.replace(/[১২৩৪৫৬৭৮৯০]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(t,e){return 12===t&&(t=0),"রাত"===e&&t>=4||"দুপুর"===e&&t<5||"বিকাল"===e?t+12:t},meridiem:function(t,e,n){return t<4?"রাত":t<10?"সকাল":t<17?"দুপুর":t<20?"বিকাল":"রাত"},week:{dow:0,doy:6}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},n={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"};return t.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",ss:"%d སྐར་ཆ།",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(t){return t.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,meridiemHour:function(t,e){return 12===t&&(t=0),"མཚན་མོ"===e&&t>=4||"ཉིན་གུང"===e&&t<5||"དགོང་དག"===e?t+12:t},meridiem:function(t,e,n){return t<4?"མཚན་མོ":t<10?"ཞོགས་ཀས":t<17?"ཉིན་གུང":t<20?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n){return t+" "+s({mm:"munutenn",MM:"miz",dd:"devezh"}[n],t)}function n(t){switch(a(t)){case 1:case 3:case 4:case 5:case 9:return t+" bloaz";default:return t+" vloaz"}}function a(t){return t>9?a(t%10):t}function s(t,e){return 2===e?i(t):t}function i(t){var e={m:"v",b:"v",d:"z"};return void 0===e[t.charAt(0)]?t:e[t.charAt(0)]+t.substring(1)}return t.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",ss:"%d eilenn",m:"ur vunutenn",mm:e,h:"un eur",hh:"%d eur",d:"un devezh",dd:e,M:"ur miz",MM:e,y:"ur bloaz",yy:n},dayOfMonthOrdinalParse:/\d{1,2}(añ|vet)/,ordinal:function(t){return t+(1===t?"añ":"vet")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n){var a=t+" ";switch(n){case"ss":return a+=1===t?"sekunda":2===t||3===t||4===t?"sekunde":"sekundi";case"m":return e?"jedna minuta":"jedne minute";case"mm":return a+=1===t?"minuta":2===t||3===t||4===t?"minute":"minuta";case"h":return e?"jedan sat":"jednog sata";case"hh":return a+=1===t?"sat":2===t||3===t||4===t?"sata":"sati";case"dd":return a+=1===t?"dan":"dana";case"MM":return a+=1===t?"mjesec":2===t||3===t||4===t?"mjeseca":"mjeseci";case"yy":return a+=1===t?"godina":2===t||3===t||4===t?"godine":"godina"}}return t.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:e,m:e,mm:e,h:e,hh:e,d:"dan",dd:e,M:"mjesec",MM:e,y:"godinu",yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(t,e){var n=1===t?"r":2===t?"n":3===t?"r":4===t?"t":"è";return"w"!==e&&"W"!==e||(n="a"),t+n},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t){return t>1&&t<5&&1!=~~(t/10)}function n(t,n,a,s){var i=t+" ";switch(a){case"s":return n||s?"pár sekund":"pár sekundami";case"ss":return n||s?i+(e(t)?"sekundy":"sekund"):i+"sekundami";case"m":return n?"minuta":s?"minutu":"minutou";case"mm":return n||s?i+(e(t)?"minuty":"minut"):i+"minutami";case"h":return n?"hodina":s?"hodinu":"hodinou";case"hh":return n||s?i+(e(t)?"hodiny":"hodin"):i+"hodinami";case"d":return n||s?"den":"dnem";case"dd":return n||s?i+(e(t)?"dny":"dní"):i+"dny";case"M":return n||s?"měsíc":"měsícem";case"MM":return n||s?i+(e(t)?"měsíce":"měsíců"):i+"měsíci";case"y":return n||s?"rok":"rokem";case"yy":return n||s?i+(e(t)?"roky":"let"):i+"lety"}}var a="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),s="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),i=[/^led/i,/^úno/i,/^bře/i,/^dub/i,/^kvě/i,/^(čvn|červen$|června)/i,/^(čvc|červenec|července)/i,/^srp/i,/^zář/i,/^říj/i,/^lis/i,/^pro/i],r=/^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;return t.defineLocale("cs",{months:a,monthsShort:s,monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,monthsParse:i,longMonthsParse:i,shortMonthsParse:i,weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(t){return t+(/сехет$/i.exec(t)?"рен":/ҫул$/i.exec(t)?"тан":"ран")},past:"%s каялла",s:"пӗр-ик ҫеккунт",ss:"%d ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},dayOfMonthOrdinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(t){var e=t,n="",a=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"];return e>20?n=40===e||50===e||60===e||80===e||100===e?"fed":"ain":e>0&&(n=a[e]),t+n},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"på dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n,a){var s={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[t+" Tage",t+" Tagen"],M:["ein Monat","einem Monat"],MM:[t+" Monate",t+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[t+" Jahre",t+" Jahren"]};return e?s[n][0]:s[n][1]}return t.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:e,mm:"%d Minuten",h:e,hh:"%d Stunden",d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n,a){var s={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[t+" Tage",t+" Tagen"],M:["ein Monat","einem Monat"],MM:[t+" Monate",t+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[t+" Jahre",t+" Jahren"]};return e?s[n][0]:s[n][1]}return t.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:e,mm:"%d Minuten",h:e,hh:"%d Stunden",d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n,a){var s={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[t+" Tage",t+" Tagen"],M:["ein Monat","einem Monat"],MM:[t+" Monate",t+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[t+" Jahre",t+" Jahren"]};return e?s[n][0]:s[n][1]}return t.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:e,mm:"%d Minuten",h:e,hh:"%d Stunden",d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e=["ޖެނުއަރީ","ފެބްރުއަރީ","މާރިޗު","އޭޕްރީލު","މޭ","ޖޫން","ޖުލައި","އޯގަސްޓު","ސެޕްޓެމްބަރު","އޮކްޓޯބަރު","ނޮވެމްބަރު","ޑިސެމްބަރު"],n=["އާދިއްތަ","ހޯމަ","އަންގާރަ","ބުދަ","ބުރާސްފަތި","ހުކުރު","ހޮނިހިރު"];return t.defineLocale("dv",{months:e,monthsShort:e,weekdays:n,weekdaysShort:n,weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/މކ|މފ/,isPM:function(t){return"މފ"===t},meridiem:function(t,e,n){return t<12?"މކ":"މފ"},calendar:{sameDay:"[މިއަދު] LT",nextDay:"[މާދަމާ] LT",nextWeek:"dddd LT",lastDay:"[އިއްޔެ] LT",lastWeek:"[ފާއިތުވި] dddd LT",sameElse:"L"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",ss:"d% ސިކުންތު",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:7,doy:12}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t){return t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)}return t.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(t,e){return t?"string"==typeof e&&/D/.test(e.substring(0,e.indexOf("MMMM")))?this._monthsGenitiveEl[t.month()]:this._monthsNominativeEl[t.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(t,e,n){return t>11?n?"μμ":"ΜΜ":n?"πμ":"ΠΜ"},isPM:function(t){return"μ"===(t+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(t,n){var a=this._calendarEl[t],s=n&&n.hours();return e(a)&&(a=a.apply(n)),a.replace("{}",s%12==1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",ss:"%d δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("en-SG",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_ĵaŭ_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-a de] MMMM, YYYY",LLL:"D[-a de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-a de] MMMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(t){return"p"===t.charAt(0).toLowerCase()},meridiem:function(t,e,n){return t>11?n?"p.t.m.":"P.T.M.":n?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"antaŭ %s",s:"sekundoj",ss:"%d sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),a=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],s=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;return t.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsRegex:s,monthsShortRegex:s,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),a=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],s=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;return t.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsRegex:s,monthsShortRegex:s,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),a=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],s=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;return t.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsRegex:s,monthsShortRegex:s,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n,a){var s={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[t+"sekundi",t+"sekundit"],m:["ühe minuti","üks minut"],mm:[t+" minuti",t+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[t+" tunni",t+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[t+" kuu",t+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[t+" aasta",t+" aastat"]};return e?s[n][2]?s[n][2]:s[n][1]:a?s[n][0]:s[n][1]}return t.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:"%d päeva",M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},n={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};return t.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysShort:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(t){return/بعد از ظهر/.test(t)},meridiem:function(t,e,n){return t<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",ss:"ثانیه d%",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(t){return t.replace(/[۰-۹]/g,function(t){return n[t]}).replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]}).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,a,s){var i="";switch(a){case"s":return s?"muutaman sekunnin":"muutama sekunti";case"ss":return s?"sekunnin":"sekuntia";case"m":return s?"minuutin":"minuutti";case"mm":i=s?"minuutin":"minuuttia";break;case"h":return s?"tunnin":"tunti";case"hh":i=s?"tunnin":"tuntia";break;case"d":return s?"päivän":"päivä";case"dd":i=s?"päivän":"päivää";break;case"M":return s?"kuukauden":"kuukausi";case"MM":i=s?"kuukauden":"kuukautta";break;case"y":return s?"vuoden":"vuosi";case"yy":i=s?"vuoden":"vuotta"}return i=n(t,s)+" "+i}function n(t,e){return t<10?e?s[t]:a[t]:t}var a="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),s=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",a[7],a[8],a[9]];return t.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaður",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(t,e){switch(e){case"D":return t+(1===t?"er":"");default:case"M":case"Q":case"DDD":case"d":return t+(1===t?"er":"e");case"w":case"W":return t+(1===t?"re":"e")}},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(t,e){switch(e){default:case"M":case"Q":case"D":case"DDD":case"d":return t+(1===t?"er":"e");case"w":case"W":return t+(1===t?"re":"e")}}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(t,e){switch(e){default:case"M":case"Q":case"D":case"DDD":case"d":return t+(1===t?"er":"e");case"w":case"W":return t+(1===t?"re":"e")}},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),n="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");return t.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e=["Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Méitheamh","Iúil","Lúnasa","Meán Fómhair","Deaireadh Fómhair","Samhain","Nollaig"],n=["Eaná","Feab","Márt","Aibr","Beal","Méit","Iúil","Lúna","Meán","Deai","Samh","Noll"],a=["Dé Domhnaigh","Dé Luain","Dé Máirt","Dé Céadaoin","Déardaoin","Dé hAoine","Dé Satharn"],s=["Dom","Lua","Mái","Céa","Déa","hAo","Sat"],i=["Do","Lu","Má","Ce","Dé","hA","Sa"];return t.defineLocale("ga",{months:e,monthsShort:n,monthsParseExact:!0,weekdays:a,weekdaysShort:s,weekdaysMin:i,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Amárach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inné aig] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s ó shin",s:"cúpla soicind",ss:"%d soicind",m:"nóiméad",mm:"%d nóiméad",h:"uair an chloig",hh:"%d uair an chloig",d:"lá",dd:"%d lá",M:"mí",MM:"%d mí",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(t){return t+(1===t?"d":t%10==2?"na":"mh")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e=["Am Faoilleach","An Gearran","Am Màrt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dàmhair","An t-Samhain","An Dùbhlachd"],n=["Faoi","Gear","Màrt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dàmh","Samh","Dùbh"],a=["Didòmhnaich","Diluain","Dimàirt","Diciadain","Diardaoin","Dihaoine","Disathairne"],s=["Did","Dil","Dim","Dic","Dia","Dih","Dis"],i=["Dò","Lu","Mà","Ci","Ar","Ha","Sa"];return t.defineLocale("gd",{months:e,monthsShort:n,monthsParseExact:!0,weekdays:a,weekdaysShort:s,weekdaysMin:i,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-màireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-dè aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(t){return t+(1===t?"d":t%10==2?"na":"mh")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(t){return 0===t.indexOf("un")?"n"+t:"en "+t},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n,a){var s={s:["thodde secondanim","thodde second"],ss:[t+" secondanim",t+" second"],m:["eka mintan","ek minute"],mm:[t+" mintanim",t+" mintam"],h:["eka voran","ek vor"],hh:[t+" voranim",t+" voram"],d:["eka disan","ek dis"],dd:[t+" disanim",t+" dis"],M:["eka mhoinean","ek mhoino"],MM:[t+" mhoineanim",t+" mhoine"],y:["eka vorsan","ek voros"],yy:[t+" vorsanim",t+" vorsam"]};return e?s[n][0]:s[n][1]}return t.defineLocale("gom-latn",{months:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Ieta to] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fatlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(t,e){switch(e){case"D":return t+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return t}},week:{dow:1,doy:4},meridiemParse:/rati|sokalli|donparam|sanje/,meridiemHour:function(t,e){return 12===t&&(t=0),"rati"===e?t<4?t:t+12:"sokalli"===e?t:"donparam"===e?t>12?t:t+12:"sanje"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"rati":t<12?"sokalli":t<16?"donparam":t<20?"sanje":"rati"}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"૧",2:"૨",3:"૩",4:"૪",5:"૫",6:"૬",7:"૭",8:"૮",9:"૯",0:"૦"},n={"૧":"1","૨":"2","૩":"3","૪":"4","૫":"5","૬":"6","૭":"7","૮":"8","૯":"9","૦":"0"};return t.defineLocale("gu",{months:"જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર".split("_"),monthsShort:"જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.".split("_"),monthsParseExact:!0,weekdays:"રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર".split("_"),weekdaysShort:"રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ".split("_"),weekdaysMin:"ર_સો_મં_બુ_ગુ_શુ_શ".split("_"),longDateFormat:{LT:"A h:mm વાગ્યે",LTS:"A h:mm:ss વાગ્યે",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm વાગ્યે",LLLL:"dddd, D MMMM YYYY, A h:mm વાગ્યે"},calendar:{sameDay:"[આજ] LT",nextDay:"[કાલે] LT",nextWeek:"dddd, LT",lastDay:"[ગઇકાલે] LT",lastWeek:"[પાછલા] dddd, LT",sameElse:"L"},relativeTime:{future:"%s મા",past:"%s પેહલા",s:"અમુક પળો",ss:"%d સેકંડ",m:"એક મિનિટ",mm:"%d મિનિટ",h:"એક કલાક",hh:"%d કલાક",d:"એક દિવસ",dd:"%d દિવસ",M:"એક મહિનો",MM:"%d મહિનો",y:"એક વર્ષ",yy:"%d વર્ષ"},preparse:function(t){return t.replace(/[૧૨૩૪૫૬૭૮૯૦]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/રાત|બપોર|સવાર|સાંજ/,meridiemHour:function(t,e){return 12===t&&(t=0),"રાત"===e?t<4?t:t+12:"સવાર"===e?t:"બપોર"===e?t>=10?t:t+12:"સાંજ"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"રાત":t<10?"સવાર":t<17?"બપોર":t<20?"સાંજ":"રાત"},week:{dow:0,doy:6}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(t){return 2===t?"שעתיים":t+" שעות"},d:"יום",dd:function(t){return 2===t?"יומיים":t+" ימים"},M:"חודש",MM:function(t){return 2===t?"חודשיים":t+" חודשים"},y:"שנה",yy:function(t){return 2===t?"שנתיים":t%10==0&&10!==t?t+" שנה":t+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(t){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(t)},meridiem:function(t,e,n){return t<5?"לפנות בוקר":t<10?"בבוקר":t<12?n?'לפנה"צ':"לפני הצהריים":t<18?n?'אחה"צ':"אחרי הצהריים":"בערב"}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};return t.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(t){return t.replace(/[१२३४५६७८९०]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(t,e){return 12===t&&(t=0),"रात"===e?t<4?t:t+12:"सुबह"===e?t:"दोपहर"===e?t>=10?t:t+12:"शाम"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"रात":t<10?"सुबह":t<17?"दोपहर":t<20?"शाम":"रात"},week:{dow:0,doy:6}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n){var a=t+" ";switch(n){case"ss":return a+=1===t?"sekunda":2===t||3===t||4===t?"sekunde":"sekundi";case"m":return e?"jedna minuta":"jedne minute";case"mm":return a+=1===t?"minuta":2===t||3===t||4===t?"minute":"minuta";case"h":return e?"jedan sat":"jednog sata";case"hh":return a+=1===t?"sat":2===t||3===t||4===t?"sata":"sati";case"dd":return a+=1===t?"dan":"dana";case"MM":return a+=1===t?"mjesec":2===t||3===t||4===t?"mjeseca":"mjeseci";case"yy":return a+=1===t?"godina":2===t||3===t||4===t?"godine":"godina"}}return t.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:e,m:e,mm:e,h:e,hh:e,d:"dan",dd:e,M:"mjesec",MM:e,y:"godinu",yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n,a){var s=t;switch(n){case"s":return a||e?"néhány másodperc":"néhány másodperce";case"ss":return s+(a||e)?" másodperc":" másodperce";case"m":return"egy"+(a||e?" perc":" perce");case"mm":return s+(a||e?" perc":" perce");case"h":return"egy"+(a||e?" óra":" órája");case"hh":return s+(a||e?" óra":" órája");case"d":return"egy"+(a||e?" nap":" napja");case"dd":return s+(a||e?" nap":" napja");case"M":return"egy"+(a||e?" hónap":" hónapja");case"MM":return s+(a||e?" hónap":" hónapja");case"y":return"egy"+(a||e?" év":" éve");case"yy":return s+(a||e?" év":" éve")}return""}function n(t){return(t?"":"[múlt] ")+"["+a[this.day()]+"] LT[-kor]"}var a="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");return t.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(t){return"u"===t.charAt(1).toLowerCase()},meridiem:function(t,e,n){return t<12?!0===n?"de":"DE":!0===n?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return n.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return n.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("hy-am",{months:{format:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),standalone:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_")},monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",ss:"%d վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(t){return/^(ցերեկվա|երեկոյան)$/.test(t)},meridiem:function(t){return t<4?"գիշերվա":t<12?"առավոտվա":t<17?"ցերեկվա":"երեկոյան"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(t,e){switch(e){case"DDD":case"w":case"W":case"DDDo":return 1===t?t+"-ին":t+"-րդ";default:return t}},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(t,e){return 12===t&&(t=0),"pagi"===e?t:"siang"===e?t>=11?t:t+12:"sore"===e||"malam"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"pagi":t<15?"siang":t<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t){return t%100==11||t%10!=1}function n(t,n,a,s){var i=t+" ";switch(a){case"s":return n||s?"nokkrar sekúndur":"nokkrum sekúndum";case"ss":return e(t)?i+(n||s?"sekúndur":"sekúndum"):i+"sekúnda";case"m":return n?"mínúta":"mínútu";case"mm":return e(t)?i+(n||s?"mínútur":"mínútum"):n?i+"mínúta":i+"mínútu";case"hh":return e(t)?i+(n||s?"klukkustundir":"klukkustundum"):i+"klukkustund";case"d":return n?"dagur":s?"dag":"degi";case"dd":return e(t)?n?i+"dagar":i+(s?"daga":"dögum"):n?i+"dagur":i+(s?"dag":"degi");case"M":return n?"mánuður":s?"mánuð":"mánuði";case"MM":return e(t)?n?i+"mánuðir":i+(s?"mánuði":"mánuðum"):n?i+"mánuður":i+(s?"mánuð":"mánuði");case"y":return n||s?"ár":"ári";case"yy":return e(t)?i+(n||s?"ár":"árum"):i+(n||s?"ár":"ári")}}return t.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:n,ss:n,m:n,mm:n,h:"klukkustund",hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(t){return(/^[0-9].+$/.test(t)?"tra":"in")+" "+t},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(t){return(/^[0-9].+$/.test(t)?"tra":"in")+" "+t},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("ja",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(t){return"午後"===t},meridiem:function(t,e,n){return t<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:function(t){return t.week()<this.week()?"[来週]dddd LT":"dddd LT"},lastDay:"[昨日] LT",lastWeek:function(t){return this.week()<t.week()?"[先週]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";default:return t}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",ss:"%d秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(t,e){return 12===t&&(t=0),"enjing"===e?t:"siyang"===e?t>=11?t:t+12:"sonten"===e||"ndalu"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"enjing":t<15?"siyang":t<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("ka",{months:{standalone:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),format:"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს".split("_")},monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(t){return/(წამი|წუთი|საათი|წელი)/.test(t)?t.replace(/ი$/,"ში"):t+"ში"},past:function(t){return/(წამი|წუთი|საათი|დღე|თვე)/.test(t)?t.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(t)?t.replace(/წელი$/,"წლის წინ"):void 0},s:"რამდენიმე წამი",ss:"%d წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(t){return 0===t?t:1===t?t+"-ლი":t<20||t<=100&&t%20==0||t%100==0?"მე-"+t:t+"-ე"},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};return t.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(t){var n=t%10,a=t>=100?100:null;return t+(e[t]||e[n]||e[a])},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"១",2:"២",3:"៣",4:"៤",5:"៥",6:"៦",7:"៧",8:"៨",9:"៩",0:"០"},n={"១":"1","២":"2","៣":"3","៤":"4","៥":"5","៦":"6","៧":"7","៨":"8","៩":"9","០":"0"};return t.defineLocale("km",{months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysMin:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ព្រឹក|ល្ងាច/,isPM:function(t){return"ល្ងាច"===t},meridiem:function(t,e,n){return t<12?"ព្រឹក":"ល្ងាច"},calendar:{sameDay:"[ថ្ងៃនេះ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",ss:"%d វិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},dayOfMonthOrdinalParse:/ទី\d{1,2}/,ordinal:"ទី%d",preparse:function(t){return t.replace(/[១២៣៤៥៦៧៨៩០]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"೧",2:"೨",3:"೩",4:"೪",5:"೫",6:"೬",7:"೭",8:"೮",9:"೯",0:"೦"},n={"೧":"1","೨":"2","೩":"3","೪":"4","೫":"5","೬":"6","೭":"7","೮":"8","೯":"9","೦":"0"};return t.defineLocale("kn",{months:"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್".split("_"),monthsShort:"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ".split("_"),monthsParseExact:!0,weekdays:"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ".split("_"),weekdaysShort:"ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ".split("_"),weekdaysMin:"ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[ಇಂದು] LT",nextDay:"[ನಾಳೆ] LT",nextWeek:"dddd, LT",lastDay:"[ನಿನ್ನೆ] LT",lastWeek:"[ಕೊನೆಯ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವು ಕ್ಷಣಗಳು",ss:"%d ಸೆಕೆಂಡುಗಳು",m:"ಒಂದು ನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದು ಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದು ದಿನ",dd:"%d ದಿನ",M:"ಒಂದು ತಿಂಗಳು",MM:"%d ತಿಂಗಳು",y:"ಒಂದು ವರ್ಷ",yy:"%d ವರ್ಷ"},preparse:function(t){return t.replace(/[೧೨೩೪೫೬೭೮೯೦]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,meridiemHour:function(t,e){return 12===t&&(t=0),"ರಾತ್ರಿ"===e?t<4?t:t+12:"ಬೆಳಿಗ್ಗೆ"===e?t:"ಮಧ್ಯಾಹ್ನ"===e?t>=10?t:t+12:"ಸಂಜೆ"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"ರಾತ್ರಿ":t<10?"ಬೆಳಿಗ್ಗೆ":t<17?"ಮಧ್ಯಾಹ್ನ":t<20?"ಸಂಜೆ":"ರಾತ್ರಿ"},dayOfMonthOrdinalParse:/\d{1,2}(ನೇ)/,ordinal:function(t){return t+"ನೇ"},week:{dow:0,doy:6}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"일";case"M":return t+"월";case"w":case"W":return t+"주";default:return t}},meridiemParse:/오전|오후/,isPM:function(t){return"오후"===t},meridiem:function(t,e,n){return t<12?"오전":"오후"}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},a=["کانونی دووەم","شوبات","ئازار","نیسان","ئایار","حوزەیران","تەمموز","ئاب","ئەیلوول","تشرینی یەكەم","تشرینی دووەم","كانونی یەکەم"];return t.defineLocale("ku",{months:a,monthsShort:a,weekdays:"یهكشهممه_دووشهممه_سێشهممه_چوارشهممه_پێنجشهممه_ههینی_شهممه".split("_"),weekdaysShort:"یهكشهم_دووشهم_سێشهم_چوارشهم_پێنجشهم_ههینی_شهممه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ه_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ئێواره|بهیانی/,isPM:function(t){return/ئێواره/.test(t)},meridiem:function(t,e,n){return t<12?"بهیانی":"ئێواره"},calendar:{sameDay:"[ئهمرۆ كاتژمێر] LT",nextDay:"[بهیانی كاتژمێر] LT",nextWeek:"dddd [كاتژمێر] LT",lastDay:"[دوێنێ كاتژمێر] LT",lastWeek:"dddd [كاتژمێر] LT",sameElse:"L"},relativeTime:{future:"له %s",past:"%s",s:"چهند چركهیهك",ss:"چركه %d",m:"یهك خولهك",mm:"%d خولهك",h:"یهك كاتژمێر",hh:"%d كاتژمێر",d:"یهك ڕۆژ",dd:"%d ڕۆژ",M:"یهك مانگ",MM:"%d مانگ",y:"یهك ساڵ",yy:"%d ساڵ"},preparse:function(t){return t.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(t){return n[t]}).replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]}).replace(/,/g,"،")},week:{dow:6,doy:12}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={0:"-чү",1:"-чи",2:"-чи",3:"-чү",4:"-чү",5:"-чи",6:"-чы",7:"-чи",8:"-чи",9:"-чу",10:"-чу",20:"-чы",30:"-чу",40:"-чы",50:"-чү",60:"-чы",70:"-чи",80:"-чи",90:"-чу",100:"-чү"};return t.defineLocale("ky",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгүн саат] LT",nextDay:"[Эртең саат] LT",nextWeek:"dddd [саат] LT",lastDay:"[Кечээ саат] LT",lastWeek:"[Өткөн аптанын] dddd [күнү] [саат] LT",sameElse:"L"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече секунд",ss:"%d секунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир саат",hh:"%d саат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(чи|чы|чү|чу)/,ordinal:function(t){var n=t%10,a=t>=100?100:null;return t+(e[t]||e[n]||e[a])},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n,a){var s={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return e?s[n][0]:s[n][1]}function n(t){return s(t.substr(0,t.indexOf(" ")))?"a "+t:"an "+t}function a(t){return s(t.substr(0,t.indexOf(" ")))?"viru "+t:"virun "+t}function s(t){if(t=parseInt(t,10),isNaN(t))return!1;if(t<0)return!0;if(t<10)return 4<=t&&t<=7;if(t<100){var e=t%10,n=t/10;return s(0===e?n:e)}if(t<1e4){for(;t>=10;)t/=10;return s(t)}return t/=1e3,s(t)}return t.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:n,past:a,s:"e puer Sekonnen",ss:"%d Sekonnen",m:e,mm:"%d Minutten",h:e,hh:"%d Stonnen",d:e,dd:"%d Deeg",M:e,MM:"%d Méint",y:e,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("lo",{months:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),monthsShort:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdays:"ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysMin:"ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},meridiemParse:/ຕອນເຊົ້າ|ຕອນແລງ/,isPM:function(t){return"ຕອນແລງ"===t},meridiem:function(t,e,n){return t<12?"ຕອນເຊົ້າ":"ຕອນແລງ"},calendar:{sameDay:"[ມື້ນີ້ເວລາ] LT",nextDay:"[ມື້ອື່ນເວລາ] LT",nextWeek:"[ວັນ]dddd[ໜ້າເວລາ] LT",lastDay:"[ມື້ວານນີ້ເວລາ] LT",lastWeek:"[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT",sameElse:"L"},relativeTime:{future:"ອີກ %s",past:"%sຜ່ານມາ",s:"ບໍ່ເທົ່າໃດວິນາທີ",ss:"%d ວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືອນ",MM:"%d ເດືອນ",y:"1 ປີ",yy:"%d ປີ"},dayOfMonthOrdinalParse:/(ທີ່)\d{1,2}/,ordinal:function(t){return"ທີ່"+t}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n,a){return e?"kelios sekundės":a?"kelių sekundžių":"kelias sekundes"}function n(t,e,n,a){return e?s(n)[0]:a?s(n)[1]:s(n)[2]}function a(t){return t%10==0||t>10&&t<20}function s(t){return r[t].split("_")}function i(t,e,i,r){var o=t+" ";return 1===t?o+n(t,e,i[0],r):e?o+(a(t)?s(i)[1]:s(i)[0]):r?o+s(i)[1]:o+(a(t)?s(i)[1]:s(i)[2])}var r={ss:"sekundė_sekundžių_sekundes",m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};return t.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:e,ss:i,m:n,mm:i,h:n,hh:i,d:n,dd:i,M:n,MM:i,y:n,yy:i},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(t){return t+"-oji"},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n){return n?e%10==1&&e%100!=11?t[2]:t[3]:e%10==1&&e%100!=11?t[0]:t[1]}function n(t,n,a){return t+" "+e(i[a],t,n)}function a(t,n,a){return e(i[a],t,n)}function s(t,e){return e?"dažas sekundes":"dažām sekundēm"}var i={ss:"sekundes_sekundēm_sekunde_sekundes".split("_"),m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};return t.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:s,ss:n,m:a,mm:n,h:a,hh:n,d:a,dd:n,M:a,MM:n,y:a,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(t,e){return 1===t?e[0]:t>=2&&t<=4?e[1]:e[2]},translate:function(t,n,a){var s=e.words[a];return 1===a.length?n?s[0]:s[1]:t+" "+e.correctGrammaticalCase(t,s)}};return t.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:e.translate,m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"dan",dd:e.translate,M:"mjesec",MM:e.translate,y:"godinu",yy:e.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",ss:"%d hēkona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(t){var e=t%10,n=t%100;return 0===t?t+"-ев":0===n?t+"-ен":n>10&&n<20?t+"-ти":1===e?t+"-ви":2===e?t+"-ри":7===e||8===e?t+"-ми":t+"-ти"},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),monthsParseExact:!0,weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",ss:"%d സെക്കൻഡ്",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,meridiemHour:function(t,e){return 12===t&&(t=0),"രാത്രി"===e&&t>=4||"ഉച്ച കഴിഞ്ഞ്"===e||"വൈകുന്നേരം"===e?t+12:t},meridiem:function(t,e,n){return t<4?"രാത്രി":t<12?"രാവിലെ":t<17?"ഉച്ച കഴിഞ്ഞ്":t<20?"വൈകുന്നേരം":"രാത്രി"}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n,a){switch(n){case"s":return e?"хэдхэн секунд":"хэдхэн секундын";case"ss":return t+(e?" секунд":" секундын");case"m":case"mm":return t+(e?" минут":" минутын");case"h":case"hh":return t+(e?" цаг":" цагийн");case"d":case"dd":return t+(e?" өдөр":" өдрийн");case"M":case"MM":return t+(e?" сар":" сарын");case"y":case"yy":return t+(e?" жил":" жилийн");default:return t}}return t.defineLocale("mn",{months:"Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар".split("_"),monthsShort:"1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар".split("_"),monthsParseExact:!0,weekdays:"Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба".split("_"),weekdaysShort:"Ням_Дав_Мяг_Лха_Пүр_Баа_Бям".split("_"),weekdaysMin:"Ня_Да_Мя_Лх_Пү_Ба_Бя".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY оны MMMMын D",LLL:"YYYY оны MMMMын D HH:mm",LLLL:"dddd, YYYY оны MMMMын D HH:mm"},meridiemParse:/ҮӨ|ҮХ/i,isPM:function(t){return"ҮХ"===t},meridiem:function(t,e,n){return t<12?"ҮӨ":"ҮХ"},calendar:{sameDay:"[Өнөөдөр] LT",nextDay:"[Маргааш] LT",nextWeek:"[Ирэх] dddd LT",lastDay:"[Өчигдөр] LT",lastWeek:"[Өнгөрсөн] dddd LT",sameElse:"L"},relativeTime:{future:"%s дараа",past:"%s өмнө",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2} өдөр/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+" өдөр";default:return t}}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n,a){var s="";if(e)switch(n){case"s":s="काही सेकंद";break;case"ss":s="%d सेकंद";break;case"m":s="एक मिनिट";break;case"mm":s="%d मिनिटे";break;case"h":s="एक तास";break;case"hh":s="%d तास";break;case"d":s="एक दिवस";break;case"dd":s="%d दिवस";break;case"M":s="एक महिना";break;case"MM":s="%d महिने";break;case"y":s="एक वर्ष";break;case"yy":s="%d वर्षे"}else switch(n){case"s":s="काही सेकंदां";break;case"ss":s="%d सेकंदां";break;case"m":s="एका मिनिटा";break;case"mm":s="%d मिनिटां";break;case"h":s="एका तासा";break;case"hh":s="%d तासां";break;case"d":s="एका दिवसा";break;case"dd":s="%d दिवसां";break;case"M":s="एका महिन्या";break;case"MM":s="%d महिन्यां";break;case"y":s="एका वर्षा";break;case"yy":s="%d वर्षां"}return s.replace(/%d/i,t)}var n={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},a={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};return t.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%sमध्ये",past:"%sपूर्वी",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},preparse:function(t){return t.replace(/[१२३४५६७८९०]/g,function(t){return a[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return n[t]})},meridiemParse:/रात्री|सकाळी|दुपारी|सायंकाळी/,meridiemHour:function(t,e){return 12===t&&(t=0),"रात्री"===e?t<4?t:t+12:"सकाळी"===e?t:"दुपारी"===e?t>=10?t:t+12:"सायंकाळी"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"रात्री":t<10?"सकाळी":t<17?"दुपारी":t<20?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(t,e){return 12===t&&(t=0),"pagi"===e?t:"tengahari"===e?t>=11?t:t+12:"petang"===e||"malam"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"pagi":t<15?"tengahari":t<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(t,e){return 12===t&&(t=0),"pagi"===e?t:"tengahari"===e?t>=11?t:t+12:"petang"===e||"malam"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"pagi":t<15?"tengahari":t<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ".split("_"),weekdays:"Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt".split("_"),weekdaysShort:"Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib".split("_"),weekdaysMin:"Ħa_Tn_Tl_Er_Ħa_Ġi_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[Għada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-bieraħ fil-]LT",lastWeek:"dddd [li għadda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f’ %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"siegħa",hh:"%d siegħat",d:"ġurnata",dd:"%d ġranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"},n={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"};return t.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",ss:"%d စက္ကန့်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(t){return t.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};return t.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(t){return t.replace(/[१२३४५६७८९०]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(t,e){return 12===t&&(t=0),"राति"===e?t<4?t:t+12:"बिहान"===e?t:"दिउँसो"===e?t>=10?t:t+12:"साँझ"===e?t+12:void 0},meridiem:function(t,e,n){return t<3?"राति":t<12?"बिहान":t<16?"दिउँसो":t<20?"साँझ":"राति"},calendar:{sameDay:"[आज] LT",nextDay:"[भोलि] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडि",s:"केही क्षण",ss:"%d सेकेण्ड",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:0,doy:6}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),a=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],s=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;return t.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsRegex:s,monthsShortRegex:s,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),a=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],s=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;return t.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsRegex:s,monthsShortRegex:s,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"੧",2:"੨",3:"੩",4:"੪",5:"੫",6:"੬",7:"੭",8:"੮",9:"੯",0:"੦"},n={"੧":"1","੨":"2","੩":"3","੪":"4","੫":"5","੬":"6","੭":"7","੮":"8","੯":"9","੦":"0"};return t.defineLocale("pa-in",{months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdays:"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"),weekdaysShort:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),weekdaysMin:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),longDateFormat:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},calendar:{sameDay:"[ਅਜ] LT",nextDay:"[ਕਲ] LT",nextWeek:"[ਅਗਲਾ] dddd, LT",lastDay:"[ਕਲ] LT",lastWeek:"[ਪਿਛਲੇ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕੁਝ ਸਕਿੰਟ",ss:"%d ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"},preparse:function(t){return t.replace(/[੧੨੩੪੫੬੭੮੯੦]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,meridiemHour:function(t,e){return 12===t&&(t=0),"ਰਾਤ"===e?t<4?t:t+12:"ਸਵੇਰ"===e?t:"ਦੁਪਹਿਰ"===e?t>=10?t:t+12:"ਸ਼ਾਮ"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"ਰਾਤ":t<10?"ਸਵੇਰ":t<17?"ਦੁਪਹਿਰ":t<20?"ਸ਼ਾਮ":"ਰਾਤ"},week:{dow:0,doy:6}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t){return t%10<5&&t%10>1&&~~(t/10)%10!=1}function n(t,n,a){var s=t+" ";switch(a){case"ss":return s+(e(t)?"sekundy":"sekund");case"m":return n?"minuta":"minutę";case"mm":return s+(e(t)?"minuty":"minut");case"h":return n?"godzina":"godzinę";case"hh":return s+(e(t)?"godziny":"godzin");case"MM":return s+(e(t)?"miesiące":"miesięcy");case"yy":return s+(e(t)?"lata":"lat")}}var a="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),s="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");return t.defineLocale("pl",{months:function(t,e){return t?""===e?"("+s[t.month()]+"|"+a[t.month()]+")":/D MMMM/.test(e)?s[t.month()]:a[t.month()]:a},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:n,m:n,mm:n,h:n,hh:n,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:n,y:"rok",yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº"})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n){var a={ss:"secunde",mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"},s=" ";return(t%100>=20||t>=100&&t%100==0)&&(s=" de "),t+s+a[n]}return t.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",ss:e,m:"un minut",mm:e,h:"o oră",hh:e,d:"o zi",dd:e,M:"o lună",MM:e,y:"un an",yy:e},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e){var n=t.split("_");return e%10==1&&e%100!=11?n[0]:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?n[1]:n[2]}function n(t,n,a){var s={ss:n?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:n?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===a?n?"минута":"минуту":t+" "+e(s[a],+t)}var a=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];return t.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:a,longMonthsParse:a,shortMonthsParse:a,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(t){if(t.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(t){if(t.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:n,m:n,mm:n,h:"час",hh:n,d:"день",dd:n,M:"месяц",MM:n,y:"год",yy:n},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(t){return/^(дня|вечера)$/.test(t)},meridiem:function(t,e,n){return t<4?"ночи":t<12?"утра":t<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(t,e){switch(e){case"M":case"d":case"DDD":return t+"-й";case"D":return t+"-го";case"w":case"W":return t+"-я";default:return t}},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],n=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"];return t.defineLocale("sd",{months:e,monthsShort:e,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(t){return"شام"===t},meridiem:function(t,e,n){return t<12?"صبح":"شام"},calendar:{sameDay:"[اڄ] LT",nextDay:"[سڀاڻي] LT",nextWeek:"dddd [اڳين هفتي تي] LT",lastDay:"[ڪالهه] LT",lastWeek:"[گزريل هفتي] dddd [تي] LT",sameElse:"L"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",ss:"%d سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("se",{months:"ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),monthsShort:"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov".split("_"),weekdays:"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),weekdaysShort:"sotn_vuos_maŋ_gask_duor_bear_láv".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s geažes",past:"maŋit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්රහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්ර_සි_සෙ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",ss:"තත්පර %d",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},dayOfMonthOrdinalParse:/\d{1,2} වැනි/,ordinal:function(t){return t+" වැනි"},meridiemParse:/පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,isPM:function(t){return"ප.ව."===t||"පස් වරු"===t},meridiem:function(t,e,n){return t>11?n?"ප.ව.":"පස් වරු":n?"පෙ.ව.":"පෙර වරු"}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t){return t>1&&t<5}function n(t,n,a,s){var i=t+" ";switch(a){case"s":return n||s?"pár sekúnd":"pár sekundami";case"ss":return n||s?i+(e(t)?"sekundy":"sekúnd"):i+"sekundami";case"m":return n?"minúta":s?"minútu":"minútou";case"mm":return n||s?i+(e(t)?"minúty":"minút"):i+"minútami";case"h":return n?"hodina":s?"hodinu":"hodinou";case"hh":return n||s?i+(e(t)?"hodiny":"hodín"):i+"hodinami";case"d":return n||s?"deň":"dňom";case"dd":return n||s?i+(e(t)?"dni":"dní"):i+"dňami";case"M":return n||s?"mesiac":"mesiacom";case"MM":return n||s?i+(e(t)?"mesiace":"mesiacov"):i+"mesiacmi";case"y":return n||s?"rok":"rokom";case"yy":return n||s?i+(e(t)?"roky":"rokov"):i+"rokmi"}}var a="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),s="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");return t.defineLocale("sk",{months:a,monthsShort:s,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n,a){var s=t+" ";switch(n){case"s":return e||a?"nekaj sekund":"nekaj sekundami";case"ss":return s+=1===t?e?"sekundo":"sekundi":2===t?e||a?"sekundi":"sekundah":t<5?e||a?"sekunde":"sekundah":"sekund";case"m":return e?"ena minuta":"eno minuto";case"mm":return s+=1===t?e?"minuta":"minuto":2===t?e||a?"minuti":"minutama":t<5?e||a?"minute":"minutami":e||a?"minut":"minutami";case"h":return e?"ena ura":"eno uro";case"hh":return s+=1===t?e?"ura":"uro":2===t?e||a?"uri":"urama":t<5?e||a?"ure":"urami":e||a?"ur":"urami";case"d":return e||a?"en dan":"enim dnem";case"dd":return s+=1===t?e||a?"dan":"dnem":2===t?e||a?"dni":"dnevoma":e||a?"dni":"dnevi";case"M":return e||a?"en mesec":"enim mesecem";case"MM":return s+=1===t?e||a?"mesec":"mesecem":2===t?e||a?"meseca":"mesecema":t<5?e||a?"mesece":"meseci":e||a?"mesecev":"meseci";case"y":return e||a?"eno leto":"enim letom";case"yy":return s+=1===t?e||a?"leto":"letom":2===t?e||a?"leti":"letoma":t<5?e||a?"leta":"leti":e||a?"let":"leti"}}return t.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(t){return"M"===t.charAt(0)},meridiem:function(t,e,n){return t<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(t,e){return 1===t?e[0]:t>=2&&t<=4?e[1]:e[2]},translate:function(t,n,a){var s=e.words[a];return 1===a.length?n?s[0]:s[1]:t+" "+e.correctGrammaticalCase(t,s)}};return t.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:e.translate,m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"dan",dd:e.translate,M:"mesec",MM:e.translate,y:"godinu",yy:e.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(t,e){return 1===t?e[0]:t>=2&&t<=4?e[1]:e[2]},translate:function(t,n,a){var s=e.words[a];return 1===a.length?n?s[0]:s[1]:t+" "+e.correctGrammaticalCase(t,s)}};return t.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:e.translate,m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"дан",dd:e.translate,M:"месец",MM:e.translate,y:"годину",yy:e.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(t,e,n){return t<11?"ekuseni":t<15?"emini":t<19?"entsambama":"ebusuku"},meridiemHour:function(t,e){return 12===t&&(t=0),"ekuseni"===e?t:"emini"===e?t>=11?t:t+12:"entsambama"===e||"ebusuku"===e?0===t?0:t+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}(e|a)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"e":1===e?"a":2===e?"a":"e")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"masiku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"௭",8:"௮",9:"௯",0:"௦"},n={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","௭":"7","௮":"8","௯":"9","௦":"0"};return t.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",ss:"%d விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},dayOfMonthOrdinalParse:/\d{1,2}வது/,ordinal:function(t){return t+"வது"},preparse:function(t){return t.replace(/[௧௨௩௪௫௬௭௮௯௦]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(t,e,n){return t<2?" யாமம்":t<6?" வைகறை":t<10?" காலை":t<14?" நண்பகல்":t<18?" எற்பாடு":t<22?" மாலை":" யாமம்"},meridiemHour:function(t,e){return 12===t&&(t=0),"யாமம்"===e?t<2?t:t+12:"வைகறை"===e||"காலை"===e?t:"நண்பகல்"===e&&t>=10?t:t+12},week:{dow:0,doy:6}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("te",{months:"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"),monthsShort:"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"),monthsParseExact:!0,weekdays:"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"),weekdaysMin:"ఆ_సో_మం_బు_గు_శు_శ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[నేడు] LT",nextDay:"[రేపు] LT",nextWeek:"dddd, LT",lastDay:"[నిన్న] LT",lastWeek:"[గత] dddd, LT",sameElse:"L"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",ss:"%d సెకన్లు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"},dayOfMonthOrdinalParse:/\d{1,2}వ/,ordinal:"%dవ",meridiemParse:/రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,meridiemHour:function(t,e){return 12===t&&(t=0),"రాత్రి"===e?t<4?t:t+12:"ఉదయం"===e?t:"మధ్యాహ్నం"===e?t>=10?t:t+12:"సాయంత్రం"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"రాత్రి":t<10?"ఉదయం":t<17?"మధ్యాహ్నం":t<20?"సాయంత్రం":"రాత్రి"},week:{dow:0,doy:6}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"minutu balun",ss:"minutu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={0:"-ум",1:"-ум",2:"-юм",3:"-юм",4:"-ум",5:"-ум",6:"-ум",7:"-ум",8:"-ум",9:"-ум",10:"-ум",12:"-ум",13:"-ум",20:"-ум",30:"-юм",40:"-ум",50:"-ум",60:"-ум",70:"-ум",80:"-ум",90:"-ум",100:"-ум"};return t.defineLocale("tg",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),weekdaysShort:"яшб_дшб_сшб_чшб_пшб_ҷум_шнб".split("_"),weekdaysMin:"яш_дш_сш_чш_пш_ҷм_шб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Имрӯз соати] LT",nextDay:"[Пагоҳ соати] LT",lastDay:"[Дирӯз соати] LT",nextWeek:"dddd[и] [ҳафтаи оянда соати] LT",lastWeek:"dddd[и] [ҳафтаи гузашта соати] LT",sameElse:"L"},relativeTime:{future:"баъди %s",past:"%s пеш",s:"якчанд сония",m:"як дақиқа",mm:"%d дақиқа",h:"як соат",hh:"%d соат",d:"як рӯз",dd:"%d рӯз",M:"як моҳ",MM:"%d моҳ",y:"як сол",yy:"%d сол"},meridiemParse:/шаб|субҳ|рӯз|бегоҳ/,meridiemHour:function(t,e){return 12===t&&(t=0),"шаб"===e?t<4?t:t+12:"субҳ"===e?t:"рӯз"===e?t>=11?t:t+12:"бегоҳ"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"шаб":t<11?"субҳ":t<16?"рӯз":t<19?"бегоҳ":"шаб"},dayOfMonthOrdinalParse:/\d{1,2}-(ум|юм)/,ordinal:function(t){var n=t%10,a=t>=100?100:null;return t+(e[t]||e[n]||e[a])},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(t){return"หลังเที่ยง"===t},meridiem:function(t,e,n){return t<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(t){return t},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t){var e=t;return e=-1!==t.indexOf("jaj")?e.slice(0,-3)+"leS":-1!==t.indexOf("jar")?e.slice(0,-3)+"waQ":-1!==t.indexOf("DIS")?e.slice(0,-3)+"nem":e+" pIq"}function n(t){var e=t;return e=-1!==t.indexOf("jaj")?e.slice(0,-3)+"Hu’":-1!==t.indexOf("jar")?e.slice(0,-3)+"wen":-1!==t.indexOf("DIS")?e.slice(0,-3)+"ben":e+" ret"}function a(t,e,n,a){var i=s(t);switch(n){case"ss":return i+" lup";case"mm":return i+" tup";case"hh":return i+" rep";case"dd":return i+" jaj";case"MM":return i+" jar";case"yy":return i+" DIS"}}function s(t){var e=Math.floor(t%1e3/100),n=Math.floor(t%100/10),a=t%10,s="";return e>0&&(s+=i[e]+"vatlh"),n>0&&(s+=(""!==s?" ":"")+i[n]+"maH"),a>0&&(s+=(""!==s?" ":"")+i[a]),""===s?"pagh":s}var i="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");return t.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:e,past:n,s:"puS lup",ss:a,m:"wa’ tup",mm:a,h:"wa’ rep",hh:a,d:"wa’ jaj",dd:a,M:"wa’ jar",MM:a,y:"wa’ DIS",yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};return t.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(t,n){switch(n){case"d":case"D":case"Do":case"DD":return t;default:if(0===t)return t+"'ıncı";var a=t%10,s=t%100-a,i=t>=100?100:null;return t+(e[a]||e[s]||e[i])}},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n,a){var s={s:["viensas secunds","'iensas secunds"],ss:[t+" secunds",t+" secunds"],m:["'n míut","'iens míut"],mm:[t+" míuts",t+" míuts"],h:["'n þora","'iensa þora"],hh:[t+" þoras",t+" þoras"],d:["'n ziua","'iensa ziua"],dd:[t+" ziuas",t+" ziuas"],M:["'n mes","'iens mes"],MM:[t+" mesen",t+" mesen"],y:["'n ar","'iens ar"],yy:[t+" ars",t+" ars"]};return a?s[n][0]:e?s[n][0]:s[n][1]}return t.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(t){return"d'o"===t.toLowerCase()},meridiem:function(t,e,n){return t>11?n?"d'o":"D'O":n?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",ss:"%d ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("ug-cn",{months:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),monthsShort:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),weekdays:"يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە".split("_"),weekdaysShort:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),weekdaysMin:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-يىلىM-ئاينىڭD-كۈنى",LLL:"YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm",LLLL:"dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm"},meridiemParse:/يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,meridiemHour:function(t,e){return 12===t&&(t=0),"يېرىم كېچە"===e||"سەھەر"===e||"چۈشتىن بۇرۇن"===e?t:"چۈشتىن كېيىن"===e||"كەچ"===e?t+12:t>=11?t:t+12},meridiem:function(t,e,n){var a=100*t+e;return a<600?"يېرىم كېچە":a<900?"سەھەر":a<1130?"چۈشتىن بۇرۇن":a<1230?"چۈش":a<1800?"چۈشتىن كېيىن":"كەچ"},calendar:{sameDay:"[بۈگۈن سائەت] LT",nextDay:"[ئەتە سائەت] LT",nextWeek:"[كېلەركى] dddd [سائەت] LT",lastDay:"[تۆنۈگۈن] LT",lastWeek:"[ئالدىنقى] dddd [سائەت] LT",sameElse:"L"},relativeTime:{future:"%s كېيىن",past:"%s بۇرۇن",s:"نەچچە سېكونت",ss:"%d سېكونت",m:"بىر مىنۇت",mm:"%d مىنۇت",h:"بىر سائەت",hh:"%d سائەت",d:"بىر كۈن",dd:"%d كۈن",M:"بىر ئاي",MM:"%d ئاي",y:"بىر يىل",yy:"%d يىل"},dayOfMonthOrdinalParse:/\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"-كۈنى";case"w":case"W":return t+"-ھەپتە";default:return t}},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e){var n=t.split("_");return e%10==1&&e%100!=11?n[0]:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?n[1]:n[2]}function n(t,n,a){var s={ss:n?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:n?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:n?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===a?n?"хвилина":"хвилину":"h"===a?n?"година":"годину":t+" "+e(s[a],+t)}function a(t,e){var n={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};return!0===t?n.nominative.slice(1,7).concat(n.nominative.slice(0,1)):t?n[/(\[[ВвУу]\]) ?dddd/.test(e)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(e)?"genitive":"nominative"][t.day()]:n.nominative}function s(t){return function(){return t+"о"+(11===this.hours()?"б":"")+"] LT"}}return t.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:a,weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:s("[Сьогодні "),nextDay:s("[Завтра "),lastDay:s("[Вчора "),nextWeek:s("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return s("[Минулої] dddd [").call(this);case 1:case 2:case 4:return s("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",ss:n,m:n,mm:n,h:"годину",hh:n,d:"день",dd:n,M:"місяць",MM:n,y:"рік",yy:n},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(t){return/^(дня|вечора)$/.test(t)},meridiem:function(t,e,n){return t<4?"ночі":t<12?"ранку":t<17?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(t,e){switch(e){case"M":case"d":case"DDD":case"w":case"W":return t+"-й";case"D":return t+"-го";default:return t}},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e=["جنوری","فروری","مارچ","اپریل","مئی","جون","جولائی","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],n=["اتوار","پیر","منگل","بدھ","جمعرات","جمعہ","ہفتہ"];return t.defineLocale("ur",{months:e,monthsShort:e,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(t){return"شام"===t},meridiem:function(t,e,n){return t<12?"صبح":"شام"},calendar:{sameDay:"[آج بوقت] LT",nextDay:"[کل بوقت] LT",nextWeek:"dddd [بوقت] LT",lastDay:"[گذشتہ روز بوقت] LT",lastWeek:"[گذشتہ] dddd [بوقت] LT",sameElse:"L"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",ss:"%d سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹہ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماہ",MM:"%d ماہ",y:"ایک سال",yy:"%d سال"},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("uz",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",ss:"%d фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(t){return/^ch$/i.test(t)},meridiem:function(t,e,n){return t<12?n?"sa":"SA":n?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(t){return t},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ý~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",ss:"%d s~écóñ~ds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("yo",{months:"Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀".split("_"),monthsShort:"Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀".split("_"),weekdays:"Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta".split("_"),weekdaysShort:"Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá".split("_"),weekdaysMin:"Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Ònì ni] LT",nextDay:"[Ọ̀la ni] LT",nextWeek:"dddd [Ọsẹ̀ tón'bọ] [ni] LT",lastDay:"[Àna ni] LT",lastWeek:"dddd [Ọsẹ̀ tólọ́] [ni] LT",sameElse:"L"},relativeTime:{future:"ní %s",past:"%s kọjá",s:"ìsẹjú aayá die",ss:"aayá %d",m:"ìsẹjú kan",mm:"ìsẹjú %d",h:"wákati kan",hh:"wákati %d",d:"ọjọ́ kan",dd:"ọjọ́ %d",M:"osù kan",MM:"osù %d",y:"ọdún kan",yy:"ọdún %d"},dayOfMonthOrdinalParse:/ọjọ́\s\d{1,2}/,ordinal:"ọjọ́ %d",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(t,e){return 12===t&&(t=0),"凌晨"===e||"早上"===e||"上午"===e?t:"下午"===e||"晚上"===e?t+12:t>=11?t:t+12},meridiem:function(t,e,n){var a=100*t+e;return a<600?"凌晨":a<900?"早上":a<1130?"上午":a<1230?"中午":a<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";case"M":return t+"月";case"w":case"W":return t+"周";default:return t}},relativeTime:{future:"%s内",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(t,e){return 12===t&&(t=0),"凌晨"===e||"早上"===e||"上午"===e?t:"中午"===e?t>=11?t:t+12:"下午"===e||"晚上"===e?t+12:void 0},meridiem:function(t,e,n){var a=100*t+e;return a<600?"凌晨":a<900?"早上":a<1130?"上午":a<1230?"中午":a<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";case"M":return t+"月";case"w":case"W":return t+"週";default:return t}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(t,e){return 12===t&&(t=0),"凌晨"===e||"早上"===e||"上午"===e?t:"中午"===e?t>=11?t:t+12:"下午"===e||"晚上"===e?t+12:void 0},meridiem:function(t,e,n){var a=100*t+e;return a<600?"凌晨":a<900?"早上":a<1130?"上午":a<1230?"中午":a<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";case"M":return t+"月";case"w":case"W":return t+"週";default:return t}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})})},function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{default:t}}var s=n(8),i=a(s),r=n(34),o=a(r),d=n(215),l=a(d);window.addEventListener("load",function(){new i.default({el:"#rop_core",store:o.default,components:{MainPagePanel:l.default},created:function(){o.default.dispatch("fetchAJAX",{req:"manage_cron",data:{action:"status"}}),o.default.dispatch("fetchAJAXPromise",{req:"get_available_services"}),o.default.dispatch("fetchAJAXPromise",{req:"get_authenticated_services"}),o.default.dispatch("fetchAJAXPromise",{req:"get_active_accounts"})}})})},function(t,e,n){var a,s;n(216),a=n(218),s=n(311),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(217);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n #rop_core .badge[data-badge]::after {\n position: absolute;\n bottom: -16px;\n right: 0px;\n }\n\n #rop_core .rop-api-not-available {\n margin: 10px 0px 10px 0px;\n }\n\n #rop_core .badge.badge-logs::after {\n right: auto;\n top: 0px;\n }\n\n #rop_core .badge.badge-logs {\n padding-right: 10px;\n }\n",""])},function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{default:t}}var s=n(18),i=a(s),r=n(219),o=a(r),d=n(248),l=a(d),u=n(257),c=a(u),_=n(286),m=a(_),f=n(294),p=a(f),h=n(299),v=a(h),y=n(304),g=a(y),M=n(0),L=(a(M),n(80)),b=a(L);t.exports={name:"main-page-panel",computed:{is_preloading_over:function(){return this.$store.state.hide_preloading},displayTabs:function(){return this.$store.state.displayTabs},page:function(){return this.$store.state.page},is_rest_api_error:function(){return this.$store.state.api_not_available},is_fb_domain_notice:function(){return this.$store.state.fb_exception_toast},current_time:{get:function(){return this.$store.state.cron_status.current_time},set:function(t){this.$store.state.cron_status.current_time=t}},date_format:function(){return this.$store.state.cron_status.date_format},logs_no:function(){return this.$store.state.cron_status.logs_number},btn_class:function(){var t="btn-"+(this.start_status?"danger":"success");return this.haveAccountsActive||(t+=" tooltip button-disabled "),t},status_color_class:function(){var t="sharing-status-"+(this.start_status?"sharing":"notsharing");return this.haveAccountsActive||(t=" sharing-status-notsharing "),this.status_is_error_display?" sharing-status-error ":t},status_label_display:function(){var t=this.$store.state.labels.general,e=this.start_status?t.sharing_to_account:t.sharing_not_started;return this.haveAccountsActive||(e=t.sharing_not_started),this.status_is_error_display?t.status+": "+t.error_check_log:t.status+": "+e},status_is_error_display:function(){return this.status_is_error_display},haveAccounts:function(){return(0,i.default)(this.$store.state.authenticatedServices).length>0},haveAccountsActive:function(){return(0,i.default)(this.$store.state.activeAccounts).length>0},start_status:function(){return this.$store.state.cron_status.current_status},generalSettings:function(){return this.$store.state.generalSettings}},mounted:function(){var t=this;setInterval(function(){t.current_time>0&&(t.current_time+=1)},1e3),this.get_toast_message(!1)},created:function(){},data:function(){return{to_pro_upsell:ROP_ASSETS_URL+"img/to_pro.png",to_business_upsell:ROP_ASSETS_URL+"img/to_business.png",plugin_logo:ROP_ASSETS_URL+"img/logo_rop.png",license:this.$store.state.licence,labels:this.$store.state.labels.general,upsell_link:ropApiSettings.upsell_link,staging:ropApiSettings.staging,is_loading:!1,is_loading_logs:!1,status_is_error_display:!1}},methods:{close_fb_domain_notice:function(){var t=this;if(this.is_loading)return void this.$log.warn("Request in progress...Bail");this.$store.dispatch("fetchAJAXPromise",{req:"fb_exception_toast",data:{action:"hide"}}).then(function(e){t.$log.info("Succesfully closed facebook domain toast."),t.is_loading=!1},function(e){t.is_loading=!1,Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",e)})},togglePosting:function(){var t=this;if(this.is_loading)return void this.$log.warn("Request in progress...Bail");this.is_loading=!0;var e=!1===this.start_status?"start":"stop";this.$store.dispatch("fetchAJAXPromise",{req:"manage_cron",data:{action:e}}).then(function(e){t.is_loading=!1},function(e){t.is_loading=!1,Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",e)})},switchTab:function(t){this.$store.commit("setTabView",t)},get_toast_message:function(t){var e=this;if(this.is_loading_logs)return void this.$log.warn("Request in progress...Bail");this.is_loading_logs=!0,this.$store.dispatch("fetchAJAXPromise",{req:"get_toast",data:{force:t}}).then(function(t){if(e.$log.info("Succesfully fetched toast log."),e.is_loading_logs=!1,e.$store.dispatch("fetchAJAX",{req:"manage_cron",data:{action:"status"}}),t.length)for(var n in t)if("error"===t[n].type){var a={type:t[n].type,show:!0,title:"Error encountered",message:t[n].message};e.$store.commit("updateState",{stateData:a,requestName:"update_toast"})}else"status_error"===t[n].type&&(e.$log.warn("Status is error check logs, global admin notice will be displayed"),e.status_is_error_display=!0)},function(t){Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t),e.is_loading_logs=!1})}},components:{accounts:o.default,settings:l.default,"accounts-selector":c.default,queue:m.default,logs:p.default,"upsell-sidebar":b.default,toast:v.default,countdown:g.default}}},function(t,e,n){var a,s;n(220),a=n(222),s=n(247),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(221);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n #rop_core .columns.py-2 .text-gray[_v-45c67b1d] {\n margin: 0;\n line-height: normal;\n }\n\n #rop_core .input-group[_v-45c67b1d] {\n width: 100%;\n }\n\n b[_v-45c67b1d] {\n margin-bottom: 5px;\n display: block;\n }\n\n #rop_core .text-gray b[_v-45c67b1d] {\n display: inline;\n }\n\n #rop_core .input-group .input-group-addon[_v-45c67b1d] {\n padding: 3px 5px;\n }\n\n #rop_core .rop-available-accounts h5[_v-45c67b1d] {\n margin-bottom: 15px;\n }\n\n @media ( max-width: 600px ) {\n #rop_core .panel-body .text-gray[_v-45c67b1d] {\n margin-bottom: 10px;\n }\n\n #rop_core .text-right[_v-45c67b1d] {\n text-align: left;\n }\n }\n",""])},function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{default:t}}var s=n(18),i=a(s),r=n(85),o=a(r),d=n(227),l=a(d),u=n(232),c=a(u),_=n(237),m=a(_);t.exports={name:"account-view",data:function(){return{addAccountActive:!1,accountsCount:0,is_loading:!1,twitter_warning:!1,labels:this.$store.state.labels.accounts,upsell_link:ropApiSettings.upsell_link,pro_installed:ropApiSettings.pro_installed,is_preloading:this.$store.state.hide_preloading}},mounted:function(){0===this.is_preloading&&this.page_loader_module_display()},computed:{accounts:function(){var t={},e=0,n=this.$store.state.authenticatedServices;for(var a in n)if(n.hasOwnProperty(a)){var s=n[a];for(var r in s.available_accounts)s.available_accounts.hasOwnProperty(r)&&(t[r]=s.available_accounts[r],"twitter"===s.service&&(e+=(0,i.default)(s.available_accounts).length))}return this.twitter_warning=e>1,this.$log.info("All accounts: ",t),this.$log.debug("Preloading: ",this.$store.state.hide_preloading),this.accountsCount=(0,i.default)(t).length,this.is_preloading=this.$store.state.hide_preloading,t},checkLicense:function(){return this.$store.state.licence<1}},methods:{page_loader_module_display:function(){this.$refs.Preloader.show()},resetAccountData:function(){var t=this;if(this.is_loading)return void this.$log.warn("Request in progress...Bail");this.is_loading=!0,this.$store.dispatch("fetchAJAXPromise",{req:"reset_accounts",data:{}}).then(function(e){t.is_loading=!1,!0===t.$parent.start_status&&t.$parent.togglePosting(),t.$store.dispatch("fetchAJAXPromise",{req:"get_available_services"}).then(function(e){t.is_loading=!1})},function(e){t.is_loading=!1,Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",e)})}},components:{SignInBtn:o.default,ServiceUserTile:l.default,AddAccountTile:c.default,vue_spinner:m.default}}},function(t,e,n){var a=n(224);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n\t#rop-sign-in-area .btn[disabled][_v-90680408]{\n\t\tcursor:not-allowed;\n\t\tpointer-events: auto;\n\t\topacity: 0.3;\n\t}\n\t.big-btn#gmb-btn[_v-90680408]{\n\tpadding: 0 35px 0 14px;\n\t}\n\t.btn-gmb[_v-90680408]{\n\ttext-transform: uppercase;\n\t}\n\t#rop_core .btn.btn-buffer[_v-90680408]{\n\t\tdisplay: none;\n\t}\n",""])},function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{default:t}}var s=n(18),i=a(s),r=n(49),o=a(r);t.exports={name:"sign-in-btn",created:function(){},data:function(){return{modal:{isOpen:!1,serviceName:"",description:"",data:{}},showAdvanceConfig:!1,labels:this.$store.state.labels.accounts,upsell_link:ropApiSettings.upsell_link,activePopup:"",appOrigin:ropAuthAppData.authAppUrl,appPathFB:ropAuthAppData.authAppFacebookPath,appPathTW:ropAuthAppData.authAppTwitterPath,appPathLI:ropAuthAppData.authAppLinkedInPath,appPathBuffer:ropAuthAppData.authAppBufferPath,appPathTumblr:ropAuthAppData.authAppTumblrPath,appPathGmb:ropAuthAppData.authAppGmbPath,appAdminEmail:ropAuthAppData.adminEmail,siteAdminUrl:ropAuthAppData.adminUrl,appUniqueId:ropAuthAppData.authToken,appSignature:ropAuthAppData.authSignature,windowParameters:"top=20,left=100,width=560,height=670",authPopupWindow:null,showLiAppBtn:ropApiSettings.show_li_app_btn,showTmblrAppBtn:ropApiSettings.show_tmblr_app_btn,showBtn:!1}},methods:{getTooltip:function(t,e){if(void 0!==t&&!1===t.active)return this.labels.only_in_pro;var n=0;for(var a in this.$store.state.authenticatedServices)this.$store.state.authenticatedServices[a].service===e&&n++;var s=0;for(var i in this.$store.state.activeAccounts)this.$store.state.activeAccounts[i].service===e&&s++;return void 0!==t&&(t.allowed_accounts<=n||t.allowed_accounts<=s)?this.labels.limit_reached:""},checkDisabled:function(t,e){if(void 0!==t&&!1===t.active)return!0;var n=0;for(var a in this.$store.state.authenticatedServices)this.$store.state.authenticatedServices[a].service===e&&n++;var s=0;for(var i in this.$store.state.activeAccounts)this.$store.state.activeAccounts[i].service===e&&s++;return void 0!==t&&(t.allowed_accounts<=n||t.allowed_accounts<=s)||this.$store.state.auth_in_progress},requestAuthorization:function(t){this.selected_network=t,this.$store.state.auth_in_progress=!0,this.$store.state.availableServices[this.selected_network].two_step_sign_in?(this.modal.serviceName=this.$store.state.availableServices[this.selected_network].name,this.modal.description=this.$store.state.availableServices[this.selected_network].description,this.modal.data=this.$store.state.availableServices[this.selected_network].credentials,this.openModal()):(this.activePopup=this.selected_network,this.getUrlAndGo([]))},openPopup:function(t){this.$log.debug("Opening popup for url ",t),this.$store.commit("logMessage",["Trying to open popup for url:"+t,"notice"]),window.open(t,"_self")},getUrlAndGo:function(t){var e=this;this.$store.dispatch("fetchAJAXPromise",{req:"get_service_sign_in_url",updateState:!1,data:{service:this.selected_network,credentials:t}}).then(function(t){t.url&&""!=t.url?e.openPopup(t.url):(e.cancelModal(),alert("Could not authenticate, please make sure you entered the correct credentials."))},function(t){Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t)})},requestAuthentication:function(){this.$store.dispatch("fetchAJAX",{req:"authenticate_service",data:{service:this.selected_network}})},openModal:function(){this.modal.isOpen=!0},closeModal:function(){var t={},e=!0,n=!0,a=!1,s=void 0;try{for(var r,d=(0,o.default)((0,i.default)(this.modal.data));!(n=(r=d.next()).done);n=!0){var l=r.value;t[l]="","value"in this.modal.data[l]&&""!==this.modal.data[l].value?(t[l]=this.modal.data[l].value,this.modal.data[l].error=!1):(this.modal.data[l].error=!0,e=!1)}}catch(t){a=!0,s=t}finally{try{!n&&d.return&&d.return()}finally{if(a)throw s}}if(!e)return void this.$forceUpdate();this.activePopup=this.selected_network,this.getUrlAndGo(t),this.modal.isOpen=!1},cancelModal:function(){this.$store.state.auth_in_progress=!1,this.showAdvanceConfig=!1,this.modal.isOpen=!1},addAccountFB:function(t){var e=this;this.$store.dispatch("fetchAJAXPromise",{req:"add_account_fb",updateState:!1,data:t}).then(function(t){window.removeEventListener("message",function(t){return e.getChildWindowMessage(t)}),e.authPopupWindow.close(),window.location.reload()},function(t){e.is_loading=!1,Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t)})},addAccountTW:function(t){var e=this;this.$store.dispatch("fetchAJAXPromise",{req:"add_account_tw",updateState:!1,data:t}).then(function(t){window.removeEventListener("message",function(t){return e.getChildWindowMessage(t)}),e.authPopupWindow.close(),window.location.reload()},function(t){e.is_loading=!1,Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t)})},addAccountLI:function(t){var e=this;this.$store.dispatch("fetchAJAXPromise",{req:"add_account_li",updateState:!1,data:t}).then(function(t){window.removeEventListener("message",function(t){return e.getChildWindowMessage(t)}),e.authPopupWindow.close(),window.location.reload()},function(t){e.is_loading=!1,Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t)})},addAccountBuffer:function(t){var e=this;this.$store.dispatch("fetchAJAXPromise",{req:"add_account_buffer",updateState:!1,data:t}).then(function(t){window.removeEventListener("message",function(t){return e.getChildWindowMessage(t)}),e.authPopupWindow.close(),window.location.reload()},function(t){e.is_loading=!1,Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t)})},addAccountTumblr:function(t){var e=this;this.$store.dispatch("fetchAJAXPromise",{req:"add_account_tumblr",updateState:!1,data:t}).then(function(t){window.removeEventListener("message",function(t){return e.getChildWindowMessage(t)}),e.authPopupWindow.close(),window.location.reload()},function(t){e.is_loading=!1,Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t)})},addAccountGmb:function(t){var e=this;this.$store.dispatch("fetchAJAXPromise",{req:"add_account_gmb",updateState:!1,data:t}).then(function(t){window.removeEventListener("message",function(t){return e.getChildWindowMessage(t)}),e.authPopupWindow.close(),window.location.reload()},function(t){e.is_loading=!1,Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t)})},getChildWindowMessage:function(t){~t.origin.indexOf(this.appOrigin)&&("Twitter"===this.modal.serviceName?this.addAccountTW(JSON.parse(t.data)):"Facebook"===this.modal.serviceName?this.addAccountFB(JSON.parse(t.data)):"LinkedIn"===this.modal.serviceName?this.addAccountLI(JSON.parse(t.data)):"Buffer"===this.modal.serviceName?this.addAccountBuffer(JSON.parse(t.data)):"Tumblr"===this.modal.serviceName?this.addAccountTumblr(JSON.parse(t.data)):"Gmb"===this.modal.serviceName&&this.addAccountGmb(JSON.parse(t.data)))},openPopupFB:function(){var t=this,e=this.appOrigin+this.appPathFB+"?callback_url="+this.siteAdminUrl+"&token="+this.appUniqueId+"&signature="+this.appSignature+"&data="+this.appAdminEmail;try{this.authPopupWindow.close()}catch(t){}finally{this.authPopupWindow=window.open(e,"authFB",this.windowParameters),this.cancelModal()}window.addEventListener("message",function(e){return t.getChildWindowMessage(e)})},openPopupTW:function(){var t=this,e=this.appOrigin+this.appPathTW+"?callback_url="+this.siteAdminUrl+"&token="+this.appUniqueId+"&signature="+this.appSignature+"&data="+this.appAdminEmail;try{this.authPopupWindow.close()}catch(t){}finally{this.authPopupWindow=window.open(e,"authTW",this.windowParameters),this.cancelModal()}window.addEventListener("message",function(e){return t.getChildWindowMessage(e)})},openPopupLI:function(){var t=this,e=this.appOrigin+this.appPathLI+"?callback_url="+this.siteAdminUrl+"&token="+this.appUniqueId+"&signature="+this.appSignature+"&data="+this.appAdminEmail;try{this.authPopupWindow.close()}catch(t){}finally{this.authPopupWindow=window.open(e,"authLI",this.windowParameters),this.cancelModal()}window.addEventListener("message",function(e){return t.getChildWindowMessage(e)})},openPopupBuffer:function(){var t=this,e=this.appOrigin+this.appPathBuffer+"?callback_url="+this.siteAdminUrl+"&token="+this.appUniqueId+"&signature="+this.appSignature+"&data="+this.appAdminEmail;try{this.authPopupWindow.close()}catch(t){}finally{this.authPopupWindow=window.open(e,"authLI",this.windowParameters),this.cancelModal()}window.addEventListener("message",function(e){return t.getChildWindowMessage(e)})},openPopupTumblr:function(){var t=this,e=this.appOrigin+this.appPathTumblr+"?callback_url="+this.siteAdminUrl+"&token="+this.appUniqueId+"&signature="+this.appSignature+"&data="+this.appAdminEmail;try{this.authPopupWindow.close()}catch(t){}finally{this.authPopupWindow=window.open(e,"authTmblr",this.windowParameters),this.cancelModal()}window.addEventListener("message",function(e){return t.getChildWindowMessage(e)})},openPopupGmb:function(){var t=this,e=this.appOrigin+this.appPathGmb+"?callback_url="+this.siteAdminUrl+"&token="+this.appUniqueId+"&signature="+this.appSignature+"&data="+this.appAdminEmail;try{this.authPopupWindow.close()}catch(t){}finally{this.authPopupWindow=window.open(e,"authGmb",this.windowParameters),this.cancelModal()}window.addEventListener("message",function(e){return t.getChildWindowMessage(e)})}},computed:{selected_service:function(){return this.services[this.selected_network]},selected_network:{get:function(){var t=this.modal.serviceName;return(0,i.default)(this.services)[0]&&""===t&&(t=(0,i.default)(this.services)[0]),t.toLowerCase()},set:function(t){this.modal.serviceName=t}},services:function(){return this.$store.state.availableServices},modalActiveClass:function(){return{active:!0===this.modal.isOpen}},serviceId:function(){return"service-"+this.modal.serviceName.toLowerCase()},isFacebook:function(){return"Facebook"===this.modal.serviceName},isTwitter:function(){return"Twitter"===this.modal.serviceName},isLinkedIn:function(){return"LinkedIn"===this.modal.serviceName},isBuffer:function(){return"Buffer"===this.modal.serviceName},isTumblr:function(){return"Tumblr"===this.modal.serviceName},isGmb:function(){return"Gmb"===this.modal.serviceName},isPinterest:function(){return"Pinterest"===this.modal.serviceName},isAllowedTumblr:function(){var t=!0;return this.showTmblrAppBtn||(t=!1),t}}}},function(t,e){t.exports='\n\t<div id="rop-sign-in-area" _v-90680408="">\n\t\t<div class="input-group text-right buttons-wrap" _v-90680408="">\n\t\t\t<button v-for="( service, network ) in services" :disabled="checkDisabled( service, network )" :title="getTooltip( service, network )" class="btn input-group-btn" :class="\'btn-\' + network" @click="requestAuthorization( network )" _v-90680408="">\n\t\t\t\t<i v-if="network !== \'buffer\' && network !== \'gmb\'" class="fa fa-fw" :class="\'fa-\' + network" _v-90680408=""></i>\n\t\t\t\t<i v-if="network === \'buffer\'" class="fa fa-fw fa-plus-square" _v-90680408=""></i>\n\t\t\t\t<i v-if="network === \'gmb\'" class="fa fa-fw fa-google" _v-90680408=""></i>\n\t\t\t\t{{service.name}}\n\t\t\t</button>\n\n\t\t</div>\n\n\t\t<div class="modal" :class="modalActiveClass" _v-90680408="">\n\t\t\t<div class="modal-overlay" _v-90680408=""></div>\n\t\t\t<div class="modal-container" _v-90680408="">\n\t\t\t\t<div class="modal-header" _v-90680408="">\n\t\t\t\t\t<button class="btn btn-clear float-right" @click="cancelModal()" _v-90680408=""></button>\n\t\t\t\t\t<div class="modal-title h5" _v-90680408="">{{ modal.serviceName }} {{labels.service_popup_title}}</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-body" _v-90680408="">\n\t\t\t\t\t<div class="content" _v-90680408="">\n\t\t\t\t\t\t<div class="auth-app" v-if="isFacebook" _v-90680408="">\n\t\t\t\t\t\t\t<button class="btn btn-primary big-btn" @click="openPopupFB()" _v-90680408="">{{labels.fb_app_signin_btn}}</button>\n\t\t\t\t\t\t\t<span class="text-center" _v-90680408="">{{labels.app_option_signin}}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="auth-app" v-if="isTwitter" _v-90680408="">\n\t\t\t\t\t\t\t<button class="btn btn-primary big-btn" @click="openPopupTW()" _v-90680408="">{{labels.tw_app_signin_btn}}</button>\n\t\t\t\t\t\t\t<span class="text-center" _v-90680408="">{{labels.app_option_signin}}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="auth-app" v-if="isLinkedIn" _v-90680408="">\n\t\t\t\t\t\t\t<button class="btn btn-primary big-btn" @click="openPopupLI()" _v-90680408="">{{labels.li_app_signin_btn}}</button>\n\t\t\t\t\t\t\t<span class="text-center" _v-90680408="">{{labels.app_option_signin}}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="auth-app" v-if="isTumblr && isAllowedTumblr" _v-90680408="">\n\t\t\t\t\t\t\t<button class="btn btn-primary big-btn" @click="openPopupTumblr()" _v-90680408="">{{labels.tumblr_app_signin_btn}}</button>\n\t\t\t\t\t\t\t<span class="text-center" _v-90680408="">{{labels.app_option_signin}}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="auth-app" v-if="isBuffer" _v-90680408="">\n\t\t\t\t\t\t\t<button class="btn btn-primary big-btn" @click="openPopupBuffer()" _v-90680408="">{{labels.buffer_app_signin_btn}}</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="auth-app" v-if="isGmb" _v-90680408="">\n\t\t\t\t\t\t\t<button class="btn btn-primary big-btn" id="gmb-btn" @click="openPopupGmb()" _v-90680408="">{{labels.gmb_app_signin_btn}}</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div id="rop-advanced-config" v-if="isFacebook || isTwitter || isLinkedIn || (isTumblr && isAllowedTumblr)" _v-90680408="">\n\t\t\t\t\t\t<button class="btn btn-primary" v-on:click="showAdvanceConfig = !showAdvanceConfig" _v-90680408="">{{labels.show_advance_config}}</button>\n\t\t\t\t\t</div>\n\t\t\t\t\t\t<div v-if="showAdvanceConfig && (isFacebook || isTwitter || isLinkedIn || (isTumblr && isAllowedTumblr) )" _v-90680408="">\n\t\t\t\t\t\t<div class="form-group" v-for="( field, id ) in modal.data" _v-90680408="">\n\t\t\t\t\t\t\t<label class="form-label" :for="field.id" _v-90680408="">{{ field.name }}</label>\n\t\t\t\t\t\t\t<input :class="[ \'form-input\', field.error ? \' is-error\' : \'\' ]" type="text" :id="field.id" v-model="field.value" :placeholder="field.name" _v-90680408="">\n\t\t\t\t\t\t\t<small class="text-error" v-if="field.error" _v-90680408="">{{labels.field_required}}</small>\n\t\t\t\t\t\t\t<p class="text-gray" _v-90680408="">{{ field.description }}</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\t<div v-if="(!isTwitter && !isFacebook && !isLinkedIn && !isBuffer && !isGmb && !isTumblr) || (isTumblr && !isAllowedTumblr)" _v-90680408="">\n\t\t\t\t\t\t<div class="form-group" v-for="( field, id ) in modal.data" _v-90680408="">\n\t\t\t\t\t\t\t<label class="form-label" :for="field.id" _v-90680408="">{{ field.name }}</label>\n\t\t\t\t\t\t\t<input :class="[ \'form-input\', field.error ? \' is-error\' : \'\' ]" type="text" :id="field.id" v-model="field.value" :placeholder="field.name" _v-90680408="">\n\t\t\t\t\t\t\t<small class="text-error" v-if="field.error" _v-90680408="">{{labels.field_required}}</small>\n\t\t\t\t\t\t\t<p class="text-gray" _v-90680408="">{{ field.description }}</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div v-if="isFacebook || isTwitter || isLinkedIn || isBuffer || isGmb || (isTumblr && isAllowedTumblr)" class="modal-footer" _v-90680408="">\n\t\t\t\t\t<p class="text-left pull-left mr-2" v-html="labels.rs_app_info" _v-90680408=""></p>\n\t\t\t\t</div>\n\t\t\t\t<div v-if="showAdvanceConfig && (isFacebook || isTwitter || isLinkedIn || isTumblr)" class="modal-footer" _v-90680408="">\n\t\t\t\t\t<div class="text-left pull-left mr-2" v-html="modal.description" _v-90680408=""></div>\n\t\t\t\t\t<button class="btn btn-primary" @click="closeModal()" _v-90680408="">{{labels.sign_in_btn}}</button>\n\t\t\t\t</div>\n\t\t\t\t<div v-if="(!isTwitter && !isFacebook && !isLinkedIn && !isBuffer && !isGmb && !isTumblr) || (isTumblr && !isAllowedTumblr)" class="modal-footer" _v-90680408="">\n\t\t\t\t\t<div class="text-left pull-left mr-2" v-html="modal.description" _v-90680408=""></div>\n\t\t\t\t\t<button class="btn btn-primary" @click="closeModal()" _v-90680408="">{{labels.sign_in_btn}}</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n'},function(t,e,n){var a,s;n(228),a=n(230),s=n(231),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(229);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n\t.rop-remove-account[_v-1669a290]{\n\t\twidth:15px;\n\t\ttext-align: center;\n\t\tcursor: pointer;\n\t\theight: 100%;\n\t\t-ms-flex: 0 0 auto;\n\t\tline-height: 40px;\n\t\topacity: 1;\n\t\tmargin-left:0;\n\t\ttransition-timing-function: ease-in;\n\t\ttransition: 1s;\n\t\tz-index:9999;\n\t}\n\n",""])},function(t,e,n){"use strict";var a=n(8),s=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports={name:"service-user-tile",props:["account_data","account_id"],data:function(){return{is_loading:!1,labels:this.$store.state.labels.accounts,upsell_link:ropApiSettings.upsell_link}},computed:{checkDisabled:function(){if(this.account_data.active)return!1;var t=this.$store.state.availableServices;if(void 0===t[this.account_data.service])return this.$log.info("No available service ",this.account_data.service),!0;if(!1===t[this.account_data.service].active)return this.$log.info("Service is not allowed",this.account_data.service),!0;var e=t[this.account_data.service].allowed_accounts;if("facebook"===this.account_data.service&&this.user.includes("Facebook Group:")&&!this.isPro)return!0;var n=0;for(var a in this.$store.state.activeAccounts)this.$store.state.activeAccounts[a].service===this.account_data.service&&n++;return this.$log.info("Service limit details ",this.account_data.service,e,n),e<=n},isPro:function(){return this.$store.state.licence>0},type:function(){return!0===this.account_data.active?"active":"inactive"},service:function(){var t=this.account_data.service;return t=""!==this.img?t.concat(" ").concat("has_image"):t.concat(" ").concat("no-image")},icon:function(){var t="fa-";return"facebook"===this.account_data.service&&(t=t.concat("facebook")),"twitter"===this.account_data.service&&(t=t.concat("twitter")),"linkedin"===this.account_data.service&&(t=t.concat("linkedin")),"tumblr"===this.account_data.service&&(t=t.concat("tumblr")),"pinterest"===this.account_data.service&&(t=t.concat("pinterest")),t},img:function(){var t="";return""!==this.account_data.img&&void 0!==this.account_data.img&&(t=this.account_data.img),t},user:function(){return this.account_data.user},link:function(){return this.account_data.link},serviceInfo:function(){return this.account_data.account.concat(" "+this.labels.at+": ").concat(this.account_data.created)}},methods:{removeAccount:function(t){var e=this;if(s.default.$log.info("Remove account",t),this.is_loading)return void s.default.$log.warn("Request in progress...Bail...",t);this.is_loading=!0,this.$store.dispatch("fetchAJAXPromise",{req:"remove_account",data:{account_id:t}}).then(function(t){e.$store.dispatch("fetchAJAXPromise",{req:"get_authenticated_services"}).then(function(t){e.is_loading=!1},function(t){e.is_loading=!1}),e.$store.dispatch("fetchAJAXPromise",{req:"get_available_services"}).then(function(t){},function(t){s.default.$log.error("service-user-tile.vue => fetchAJAXPromise::get_available_services issue: ",t)})},function(t){e.is_loading=!1,s.default.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t)})},toggleAccount:function(t,e){var n=this,a=t.split("_");if(3!==a.length)return void s.default.$log.error("Invalid id format for active account ",t);var i=a[0]+"_"+a[1];this.$store.state.authenticatedServices[i].available_accounts[t].active="inactive"!==e,this.$log.info("Before toggle ",this.$store.state.activeAccounts),"inactive"===e?s.default.delete(this.$store.state.activeAccounts,t):s.default.set(this.$store.state.activeAccounts,t,this.$store.state.authenticatedServices[i].available_accounts[t]),this.$store.dispatch("fetchAJAXPromise",{req:"toggle_account",data:{account_id:t,state:e}}).then(function(t){n.$store.dispatch("fetchAJAXPromise",{req:"get_authenticated_services"}).then(function(t){n.is_loading=!1},function(t){n.is_loading=!1})},function(t){n.is_loading=!1,s.default.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t)})},startToggleAccount:function(t,e){if(s.default.$log.info("Toggle account",t,e),this.is_loading)return void s.default.$log.warn("Request in progress...Bail...",t,e);this.is_loading=!0,this.toggleAccount(t,e)}}}},function(t,e){t.exports='\n\t<div class="tile tile-centered rop-account" :class="\'rop-\'+type+\'-account\'" _v-1669a290="">\n\n\t\t<div class="tile-icon" _v-1669a290="">\n\t\t\t<div class="icon_box" :class="service" _v-1669a290="">\n\t\t\t\t<img class="service_account_image" :src="img" v-if="img" _v-1669a290="">\n\t\t\t\t<i class="fa " :class="icon" aria-hidden="true" _v-1669a290=""></i>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="tile-content" _v-1669a290="">\n\t\t\t<div class="tile-title" _v-1669a290=""><a :href="link" target="_blank" _v-1669a290="">{{ user }}</a></div>\n\t\t\t<div class="tile-subtitle text-gray" _v-1669a290="">{{ serviceInfo }}</div>\n\t\t</div>\n\t\t<div class="tile-action" _v-1669a290="">\n\t\t\t<div class="form-group" _v-1669a290="">\n\t\t\t\t<label class="form-switch" _v-1669a290="">\n\t\t\t\t\t<div class="ajax-loader " _v-1669a290=""><i class="fa fa-spinner fa-spin" v-show="is_loading" _v-1669a290=""></i></div>\n\t\t\t\t\t<input :disabled="checkDisabled" type="checkbox" v-model="account_data.active" @change="startToggleAccount( account_id, type )" _v-1669a290="">\n\t\t\t\t\t<i class="form-icon" _v-1669a290=""></i>\n\t\t\t\t</label>\n\t\t\t</div>\n\n \t\t<div class="tile-icon rop-remove-account tooltip tooltip-right" @click="removeAccount(account_id) " :data-tooltip="labels.remove_account" v-if=" ! account_data.active" _v-1669a290="">\n\t\t\t<i class="fa fa-trash" v-if=" ! is_loading" _v-1669a290=""></i>\n\t\t\t<i class="fa fa-spinner fa-spin" v-else="" _v-1669a290=""></i>\n\t\t</div>\n\n\t\t</div>\n\t</div>\n'},function(t,e,n){var a,s;n(233),a=n(235),s=n(236),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(234);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n\t.icon_box[_v-c7c6b28e] {\n\t\tbackground: #efefef;\n\t\tpadding: 0;\n\t\ttransition: .3s ease;\n\t}\n\n\t.icon_box.close .fa[_v-c7c6b28e] {\n\t\tline-height: 1.6em;\n\t}\n\n\t.icon_box.open .fa[_v-c7c6b28e] {\n\t\tline-height: 1.7em;\n\t\twidth: 20px;\n\t\ttransform: rotate(-135deg);\n\t\t-webkit-transform: rotate(-135deg);\n\t}\n\n\t.fa[_v-c7c6b28e] {\n\t\ttransition: all .3s cubic-bezier(.34, 1.61, .7, 1);\n\t}\n\n",""])},function(t,e,n){"use strict";var a=n(85),s=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports={name:"add-account-tile",data:function(){return{addAccountActive:!1,labels:this.$store.state.labels.accounts,upsell_link:ropApiSettings.upsell_link,add_more_clicked:!1,added_networks:ropApiSettings.added_networks}},computed:{},components:{SignInBtn:s.default},methods:{addMore:function(){this.add_more_clicked=!0}}}},function(t,e){t.exports='\n\t<div _v-c7c6b28e="">\n\t\t<div class="tile-content" _v-c7c6b28e="">\n\t\t</div>\n\t\t<div class="rop-add-account" _v-c7c6b28e="">\n <button class="btn btn-secondary" v-if="!this.add_more_clicked && this.added_networks >= 2" @click="addMore()" _v-c7c6b28e="">\n <i class="fa fa-plus" _v-c7c6b28e=""></i>{{labels.add_all_cta}}\n </button>\n\n\t\t\t\t\t<sign-in-btn v-if="this.add_more_clicked || this.added_networks < 2" _v-c7c6b28e=""></sign-in-btn>\n\t\t</div>\n\t</div>\n'},function(t,e,n){var a,s;n(238),a=n(240),s=n(246),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(239);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n .preloader-container[_v-0bef4ce3] {\n position: relative;\n z-index: 9998;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n margin: auto;\n width: 100%;\n height: 218px;\n background-color: rgba(255, 255, 255, 0.1);\n display: block;\n }\n\n .preloader-body[_v-0bef4ce3] {\n width: 350px;\n height: 80px;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n margin: auto;\n text-align: center;\n display: block;\n }\n",""])},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n(241),s=function(t){return t&&t.__esModule?t:{default:t}}(a),i={"loader-style":s.default};e.default={name:"vue-spinner",mounted:function(){},props:{spinner_style:{type:String,default:"loader-style"},loading:{type:Boolean,default:!0},color:{type:String,default:"#429bf4"},size:{type:String,default:"30px"},margin:{type:String,default:"2px"},radius:{type:String,default:"100%"},preloader_message:{type:String,default:"Loading..."}},data:function(){return{display_the_preloader:!1,loading_message:this.preloader_message}},components:i,methods:{show:function(){this.display_the_preloader=!0},hide:function(){this.display_the_preloader=!1}}}},function(t,e,n){var a,s;n(242),a=n(244),s=n(245),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(243);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n\n .preloader-loading-item .normal-dot[_v-8eaa7080] {\n animation: dot-do-animation 0.7s infinite linear;\n animation-fill-mode: both;\n display: inline-block;\n }\n\n .preloader-loading-item .normal-dot-odd[_v-8eaa7080] {\n animation-delay: 0s;\n }\n\n .preloader-loading-item .normal-dot-even[_v-8eaa7080] {\n animation-delay: 0.50s;\n }\n\n @keyframes dot-do-animation {\n 50% {\n transform: scale(0.75);\n -webkit-opacity: 0.2;\n opacity: 0.2;\n }\n 100% {\n transform: scale(1);\n -webkit-opacity: 1;\n opacity: 1;\n }\n }\n",""])},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={name:"preload_three_dots",props:{loading:{type:Boolean,default:!0},color:{type:String,default:"#5dc596"},size:{type:String,default:"15px"},margin:{type:String,default:"2px"},radius:{type:String,default:"100%"}},data:function(){return{dot_style:{backgroundColor:this.color,height:this.size,width:this.size,margin:this.margin,borderRadius:this.radius}}}}},function(t,e){t.exports='\n <div class="preloader-loading-item" v-show="loading" _v-8eaa7080="">\n <div class="normal-dot normal-dot-odd" v-bind:style="dot_style" _v-8eaa7080=""></div>\n <div class="normal-dot normal-dot-even" v-bind:style="dot_style" _v-8eaa7080=""></div>\n <div class="normal-dot normal-dot-odd" v-bind:style="dot_style" _v-8eaa7080=""></div>\n </div>\n'},function(t,e){t.exports='\n <transition v-if="display_the_preloader" _v-0bef4ce3="">\n <div class="preloader-container" _v-0bef4ce3="">\n <div class="preloader-body text-center" _v-0bef4ce3="">\n <p class="empty-title h5" v-html="loading_message" _v-0bef4ce3=""></p>\n <component v-bind:is="spinner_style" :loading="loading" :color="color" :size="size" :margin="margin" :radius="radius" _v-0bef4ce3=""></component>\n </div>\n </div>\n </transition>\n'},function(t,e){t.exports='\n <div class="tab-view" _v-45c67b1d="">\n <div class="panel-body" _v-45c67b1d="">\n <div class="toast toast-warning" v-html="labels.twitter_warning" v-if="twitter_warning" _v-45c67b1d="">\n\n </div>\n <div class="container" _v-45c67b1d="">\n <div class="columns" :class="\'rop-tab-state-\'+is_loading" _v-45c67b1d="">\n <div class="column col-sm-12 col-md-12 col-lg-12 text-left rop-available-accounts mt-2" _v-45c67b1d="">\n <vue_spinner :preloader_message="labels.preloader_message_accounts" ref="Preloader" v-if="is_preloading === 0" _v-45c67b1d=""></vue_spinner>\n <div class="empty mb-2" v-if="accountsCount === 0 && is_preloading > 0" _v-45c67b1d="">\n <div class="empty-icon" _v-45c67b1d="">\n <i class="fa fa-3x fa-user-circle-o" _v-45c67b1d=""></i>\n </div>\n <p class="empty-title h5" _v-45c67b1d="">{{labels.no_accounts}}</p>\n <p class="empty-subtitle" _v-45c67b1d="">{{labels.no_accounts_desc}}</p>\n </div>\n <div class="account-container" v-for="( account, id ) in accounts" v-if="is_preloading > 0" _v-45c67b1d="">\n <service-user-tile :account_data="account" :account_id="id" _v-45c67b1d=""></service-user-tile>\n <span class="divider" _v-45c67b1d=""></span>\n </div>\n <div class="add-accounts" v-if="is_preloading > 0" id="rop-add-account-button" _v-45c67b1d="">\n <add-account-tile _v-45c67b1d=""></add-account-tile>\n <span class="divider" _v-45c67b1d=""></span>\n </div>\n </div>\n </div>\n </div>\n <div class="panel-footer" v-if="is_preloading > 0" _v-45c67b1d="">\n <div class="columns my-2" v-if="checkLicense && pro_installed" _v-45c67b1d="">\n <div class="column col-12" _v-45c67b1d="">\n <i class="fa fa-info-circle " _v-45c67b1d=""></i> <span v-html="labels.activate_license" _v-45c67b1d=""></span>\n </div>\n </div>\n <div class="columns my-2" v-if="(checkLicense && accountsCount === 2) && !pro_installed" _v-45c67b1d="">\n <div class="column col-12" _v-45c67b1d="">\n <p class="upsell" _v-45c67b1d="">\n <i class="fa fa-info-circle " _v-45c67b1d=""></i> <span v-html="labels.upsell_accounts" _v-45c67b1d=""></span>\n </p>\n </div>\n </div>\n <div class="column col-12 text-right" _v-45c67b1d="">\n <button class="btn btn-secondary" @click="resetAccountData()" _v-45c67b1d="">\n <i class="fa fa-ban" v-if="!this.is_loading" _v-45c67b1d=""></i>\n <i class="fa fa-spinner fa-spin" v-else="" _v-45c67b1d=""></i>\n {{labels.remove_all_cta}}\n </button>\n </div>\n </div>\n </div>\n\n </div>\n'},function(t,e,n){var a,s;n(249),a=n(251),s=n(256),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(250);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n\t#rop_core .panel-body .text-gray[_v-e19866cc] {\n\t\tmargin: 0;\n\t\tline-height: normal;\n\t}\n\n\t#rop_core .input-group[_v-e19866cc] {\n\t\twidth: 100%;\n\t}\n\n\tb[_v-e19866cc] {\n\t\tmargin-bottom: 5px;\n\t\tdisplay: block;\n\t}\n\n\t#rop_core .input-group .input-group-addon[_v-e19866cc] {\n\t\tpadding: 3px 5px;\n\t}\n\n\t@media ( max-width: 600px ) {\n\t\t#rop_core .panel-body .text-gray[_v-e19866cc] {\n\t\t\tmargin-bottom: 10px;\n\t\t}\n\n\t\t#rop_core .text-right[_v-e19866cc] {\n\t\t\ttext-align: left;\n\t\t}\n\t}\n\n\t.rop-post-type-badge[_v-e19866cc]{\n\t\ttext-align: center;\n\n\t}\n",""])},function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{default:t}}var s=n(86),i=a(s),r=n(52),o=a(r);t.exports={name:"settings-view",data:function(){return{searchQuery:"",postTimeout:"",labels:this.$store.state.labels.settings,upsell_link:ropApiSettings.upsell_link,is_loading:!1,is_taxonomy_message:!1}},computed:{generalSettings:function(){return this.$store.state.generalSettings},isPro:function(){return this.$store.state.licence>=1},isTaxLimit:function(){return ropApiSettings.tax_apply_limit>0},isBiz:function(){return this.$store.state.licence>1},postTypes:function(){return this.$store.state.generalSettings.available_post_types},taxonomies:function(){return this.$store.state.generalSettings.available_taxonomies},checkMediaPostType:function(){var t=this.$store.state.generalSettings.selected_post_types;return void 0!==t&&null!==t&&(!(t.length<0)&&t.map(function(t){return t.value}).indexOf("attachment")>-1)},isInstantShare:function(){return this.$store.state.generalSettings.instant_share},isCustomMsgs:function(){return this.$store.state.generalSettings.custom_messages}},mounted:function(){this.$log.info("In General Settings state "),this.getGeneralSettings()},methods:{displayProMessage:function(t){!this.isPro&&t>=4&&(!0===this.isTaxLimit?this.is_taxonomy_message=!0:this.is_taxonomy_message=!1)},getGeneralSettings:function(){var t=this;0===this.$store.state.generalSettings.length&&(this.is_loading=!0,this.$log.info("Fetching general settings."),this.$store.dispatch("fetchAJAXPromise",{req:"get_general_settings"}).then(function(e){t.is_loading=!1,t.$log.debug("Succesfully fetched.")},function(e){t.is_loading=!1,t.$log.error("Can not fetch the general settings.")}))},searchUpdate:function(t){this.searchQuery=t},updatedPostTypes:function(t){var e=[];for(var n in t)e.push(t[n].value);this.$store.commit("updateState",{stateData:t,requestName:"update_selected_post_types"}),this.$store.dispatch("fetchAJAX",{req:"get_taxonomies",data:{post_types:e}})},updatedTaxonomies:function(t){var e=[];if(this.isPro||!1===this.isTaxLimit){this.is_taxonomy_message=!1;for(var n in t)e.push(t[n].value);this.$store.commit("updateState",{stateData:t,requestName:"update_selected_taxonomies"})}else if(t.length>3)this.is_taxonomy_message=!0;else{this.is_taxonomy_message=!1;for(var a in t)e.push(t[a].value);this.$store.commit("updateState",{stateData:t,requestName:"update_selected_taxonomies"})}},saveGeneralSettings:function(){var t=this,e=this.$store.state.generalSettings.selected_post_types,n=this.$store.state.generalSettings.selected_taxonomies,a=this.generalSettings.exclude_taxonomies;this.generalSettings.selected_posts;this.is_loading=!0,this.$log.info("Sending request for saving general settings.."),this.$store.dispatch("fetchAJAXPromise",{req:"save_general_settings",updateState:!1,data:{available_taxonomies:this.generalSettings.available_taxonomies,default_interval:this.generalSettings.default_interval,minimum_post_age:this.generalSettings.minimum_post_age,maximum_post_age:this.generalSettings.maximum_post_age,number_of_posts:this.generalSettings.number_of_posts,more_than_once:this.generalSettings.more_than_once,selected_post_types:e,selected_taxonomies:n,exclude_taxonomies:a,ga_tracking:this.generalSettings.ga_tracking,custom_messages:this.generalSettings.custom_messages,custom_messages_share_order:this.generalSettings.custom_messages_share_order,instant_share:this.generalSettings.instant_share,true_instant_share:this.generalSettings.true_instant_share,instant_share_default:this.generalSettings.instant_share_default,instant_share_future_scheduled:this.generalSettings.instant_share_future_scheduled,housekeeping:this.generalSettings.housekeeping}}).then(function(e){t.is_loading=!1,t.$log.info("Successfully saved general settings.")},function(e){t.$log.error("Successfully saved general settings."),t.is_loading=!1,Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",e)})}},components:{counterInput:i.default,MultipleSelect:o.default}}},function(t,e,n){var a=n(253);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n\t#rop_core .input-group.rop-counter-group {\n\t\tposition: relative;\n\t\twidth: 100%;\n\t}\n\t\n\t#rop_core .btn.increment-btn {\n\t\tposition: absolute;\n\t\tright: 0;\n\t\twidth: 1rem;\n\t\theight: 0.85rem;\n\t\tpadding: 0.025rem 0.010rem;\n\t\tline-height: 0.3rem;\n\t\tz-index: 2;\n\t\tcolor: #ababab;\n\t\tborder-color: #ababab;\n\t}\n\t\n\t#rop_core .btn.increment-btn:hover, #rop_core .btn.increment-btn:active, #rop_core .btn.increment-btn:focus {\n\t\tbackground-color: #00a6e3;\n\t\tcolor: #fff;\n\t\tborder-color: #00a6e3;\n\t}\n\t\n\t#rop_core .btn.increment-btn.up {\n\t\ttop: 0;\n\t}\n\t\n\t#rop_core .btn.increment-btn.down {\n\t\tbottom: 0;\n\t}\n\t\n\tinput.rop-counter::-webkit-inner-spin-button {\n\t\tdisplay: none;\n\t}\n",""])},function(t,e,n){"use strict";var a=null;t.exports={name:"counter-input",props:{id:{default:""},value:{default:0,type:Number},allowNegative:{default:!1,type:Boolean},minVal:{default:0,type:Number},maxVal:{default:0,type:Number}},data:function(){return{pressStartTime:null,incrementUp:0,incrementDown:0,inputValue:0}},computed:{inputValueC:{get:function(){return this.value},set:function(t){this.inputValue=parseFloat(t),this.$emit("update:value",this.inputValue)}}},methods:{updateInput:function(){this.inputValue=this.value.toString(),this.inputValue=parseFloat(this.inputValue);var t=new Date,e=parseInt((t.getTime()-this.pressStartTime.getTime())/1e3),n=e;0===e&&(n=1),n=parseInt(n),1===this.incrementUp&&(this.inputValue+=n,this.inputValue>this.maxVal&&0!==this.maxVal&&(this.inputValue=this.maxVal)),1===this.incrementDown&&(this.inputValue-=n,this.inputValue<0&&!1===this.allowNegative&&(this.inputValue=0),this.inputValue<this.minVal&&(this.inputValue=this.minVal)),this.inputValue=parseFloat(this.inputValue.toFixed(1)),this.$emit("update:value",this.inputValue)},isPressed:function(t){"up"===t?this.incrementUp=1:this.incrementDown=1,this.pressStartTime=new Date,this.updateInput(),a=setInterval(this.updateInput,250)},isReleased:function(t){"up"===t?this.incrementUp=0:this.incrementDown=0,this.pressStartTime=null,clearInterval(a)}}}},function(t,e){t.exports='\n\t<div class="input-group rop-counter-group">\n\t\t<input class="form-input rop-counter" type="text" v-model="inputValueC" :id="id">\n\t\t<button class="btn input-group-btn increment-btn up" @mousedown="isPressed(\'up\')" @mouseup="isReleased(\'up\')"><i\n\t\t\t\tclass="fa fa-fw fa-caret-up"></i></button>\n\t\t<button class="btn input-group-btn increment-btn down" @mousedown="isPressed(\'down\')"\n\t\t @mouseup="isReleased(\'down\')"><i class="fa fa-fw fa-caret-down"></i></button>\n\t</div>\n'},function(t,e){t.exports='\n <div class="tab-view" _v-e19866cc="">\n <div class="panel-body" _v-e19866cc="">\n <div class="container" :class="\'rop-tab-state-\'+is_loading" _v-e19866cc="">\n <div class="columns py-2" v-if="! isBiz" _v-e19866cc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-e19866cc="">\n <b _v-e19866cc="">{{labels.min_interval_title}}</b>\n <p class="text-gray" _v-e19866cc="">{{labels.min_interval_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-e19866cc="">\n <counter-input id="default_interval" :value.sync="generalSettings.default_interval" _v-e19866cc=""></counter-input>\n </div>\n </div>\n <span class="divider" _v-e19866cc=""></span>\n <div class="columns py-2" _v-e19866cc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-e19866cc="">\n <b _v-e19866cc="">{{labels.min_days_title}}</b>\n <p class="text-gray" _v-e19866cc="">{{labels.min_days_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-e19866cc="">\n <counter-input id="min_post_age" :max-val="365" :value.sync="generalSettings.minimum_post_age" _v-e19866cc=""></counter-input>\n </div>\n </div>\n \x3c!-- Max Post Age --\x3e\n <div class="columns py-2" _v-e19866cc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-e19866cc="">\n <b _v-e19866cc="">{{labels.max_days_title}}</b>\n <p class="text-gray" _v-e19866cc="">{{labels.max_days_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-e19866cc="">\n <counter-input id="max_post_age" :max-val="365" :value.sync="generalSettings.maximum_post_age" _v-e19866cc=""></counter-input>\n </div>\n </div>\n\n <span class="divider" _v-e19866cc=""></span>\n\n <div class="columns py-2" _v-e19866cc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-e19866cc="">\n <b _v-e19866cc="">{{labels.no_posts_title}}</b>\n <p class="text-gray" _v-e19866cc="">{{labels.no_posts_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-e19866cc="">\n <counter-input id="no_of_posts" :value.sync="generalSettings.number_of_posts" _v-e19866cc=""></counter-input>\n </div>\n </div>\n <span class="divider" _v-e19866cc=""></span>\n\n \x3c!-- Share more than once --\x3e\n <div class="columns py-2" _v-e19866cc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-e19866cc="">\n <b _v-e19866cc="">{{labels.share_once_title}}</b>\n <p class="text-gray" _v-e19866cc="">{{labels.share_once_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align text-left" _v-e19866cc="">\n <div class="form-group" _v-e19866cc="">\n <label class="form-checkbox" id="share_more_than_once" _v-e19866cc="">\n <input type="checkbox" v-model="generalSettings.more_than_once" _v-e19866cc="">\n <i class="form-icon" _v-e19866cc=""></i> {{labels.share_once_yes}}\n </label>\n </div>\n </div>\n </div>\n <span class="divider" _v-e19866cc=""></span>\n <div class="columns py-2" :class="\'rop-control-container-\'+isPro" _v-e19866cc="">\n <div class="column col-6 col-sm-12 vertical-align rop-control" _v-e19866cc="">\n <b _v-e19866cc="">{{labels.post_types_title}}</b>\n <p class="text-gray" _v-e19866cc=""><span v-html="labels.post_types_desc" _v-e19866cc=""></span></p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align text-left rop-control" _v-e19866cc="">\n <multiple-select id="rop_post_types" :options="postTypes" :disabled="isPro" :selected="generalSettings.selected_post_types" :changed-selection="updatedPostTypes" _v-e19866cc=""></multiple-select>\n\n <p class="text-primary rop-post-type-badge" v-if="checkMediaPostType " v-html="labels.post_types_attachament_info" _v-e19866cc=""></p>\n </div>\n </div>\n\n <div class="columns " v-if="!isPro" _v-e19866cc="">\n <div class="column text-center" _v-e19866cc="">\n <p class="upsell" _v-e19866cc=""><i class="fa fa-lock" _v-e19866cc=""></i> {{labels.post_types_upsell}}</p>\n </div>\n </div>\n\n\t\t\t\t<span class="divider" v-if="!isPro" _v-e19866cc=""></span>\n\n \x3c!-- Taxonomies --\x3e\n\t\t\t\t<div class="columns py-2" v-if="!isPro" _v-e19866cc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-e19866cc="">\n <b _v-e19866cc="">{{labels.taxonomies_title}}</b>\n <p class="text-gray" _v-e19866cc=""><span v-html="labels.taxonomies_desc" _v-e19866cc=""></span></p>\n </div>\n <div id="rop_taxonomies" class="column col-6 col-sm-12 vertical-align text-left" _v-e19866cc="">\n <div class="input-group" _v-e19866cc="">\n <multiple-select :options="taxonomies" :selected="generalSettings.selected_taxonomies" :changed-selection="updatedTaxonomies" :is_pro_version="isPro" :apply_limit="isTaxLimit" v-on:display-limiter-notice="displayProMessage" _v-e19866cc=""></multiple-select>\n <span class="input-group-addon vertical-align" _v-e19866cc="">\n\t\t\t\t\t\t\t\t<label class="form-checkbox" _v-e19866cc="">\n\t\t\t\t\t\t\t\t\t<input type="checkbox" v-model="generalSettings.exclude_taxonomies" _v-e19866cc="">\n\t\t\t\t\t\t\t\t\t<i class="form-icon" _v-e19866cc=""></i>{{labels.taxonomies_exclude}}\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t</span>\n </div>\n <p class="text-primary rop-post-type-badge" v-if="is_taxonomy_message" v-html="labels.post_types_taxonomy_limit" _v-e19866cc=""></p>\n </div>\n </div>\n\n <span class="divider" _v-e19866cc=""></span>\n\n \x3c!-- Google Analytics --\x3e\n <div class="columns py-2" _v-e19866cc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-e19866cc="">\n <b _v-e19866cc="">{{labels.ga_title}}</b>\n <p class="text-gray" _v-e19866cc="">{{labels.ga_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align text-left" _v-e19866cc="">\n <div class="form-group" _v-e19866cc="">\n <label class="form-checkbox" _v-e19866cc="">\n <input type="checkbox" v-model="generalSettings.ga_tracking" _v-e19866cc="">\n <i class="form-icon" _v-e19866cc=""></i>{{labels.ga_yes}}\n </label>\n </div>\n </div>\n </div>\n\n <span class="divider" _v-e19866cc=""></span>\n\n <div class="columns py-2" _v-e19866cc="">\n <div class="column col-6 col-sm-12 vertical-align rop-control" _v-e19866cc="">\n <b _v-e19866cc="">{{labels.instant_share_title}}</b>\n <p class="text-gray" _v-e19866cc=""><span v-html="labels.instant_share_desc" _v-e19866cc=""></span></p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align text-left rop-control" _v-e19866cc="">\n <div class="form-group" _v-e19866cc="">\n <label id="rop_instant_share" class="form-checkbox" _v-e19866cc="">\n <input type="checkbox" v-model="generalSettings.instant_share" _v-e19866cc="">\n <i class="form-icon" _v-e19866cc=""></i>{{labels.instant_share_yes}}\n </label>\n </div>\n </div>\n </div>\n\n <span class="divider" _v-e19866cc=""></span>\n\n <div class="columns py-2" v-if="isInstantShare" _v-e19866cc="">\n <div class="column col-6 col-sm-12 vertical-align rop-control" _v-e19866cc="">\n <b _v-e19866cc="">{{labels.true_instant_share_title}}</b>\n <p class="text-gray" _v-e19866cc=""><span v-html="labels.true_instant_share_desc" _v-e19866cc=""></span></p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align text-left rop-control" _v-e19866cc="">\n <div class="form-group" _v-e19866cc="">\n <label class="form-checkbox" _v-e19866cc="">\n <input type="checkbox" v-model="generalSettings.true_instant_share" _v-e19866cc="">\n <i class="form-icon" _v-e19866cc=""></i>{{labels.true_instant_share_yes}}\n </label>\n </div>\n </div>\n </div>\n\n <span class="divider" v-if="isInstantShare" _v-e19866cc=""></span>\n\n <div class="columns py-2" v-if="isInstantShare" _v-e19866cc="">\n <div class="column col-6 col-sm-12 vertical-align rop-control" _v-e19866cc="">\n <b _v-e19866cc="">{{labels.instant_share_default_title}}</b>\n <p class="text-gray" _v-e19866cc="">{{labels.instant_share_default_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align text-left rop-control" _v-e19866cc="">\n <div class="form-group" _v-e19866cc="">\n <label class="form-checkbox" _v-e19866cc="">\n <input type="checkbox" v-model="generalSettings.instant_share_default" _v-e19866cc="">\n <i class="form-icon" _v-e19866cc=""></i>{{labels.instant_share_default_yes}}\n </label>\n </div>\n </div>\n </div>\n\n <span class="divider" v-if="isInstantShare" _v-e19866cc=""></span>\n\n <div class="columns py-2" v-if="isInstantShare" :class="\'rop-control-container-\'+isPro" _v-e19866cc="">\n <div class="column col-6 col-sm-12 vertical-align rop-control" _v-e19866cc="">\n <b _v-e19866cc="">{{labels.instant_share_future_scheduled_title}}</b>\n <p class="text-gray" _v-e19866cc=""><span v-html="labels.instant_share_future_scheduled_desc" _v-e19866cc=""></span></p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align text-left rop-control" _v-e19866cc="">\n <div class="form-group" _v-e19866cc="">\n <label class="form-checkbox" _v-e19866cc="">\n <input type="checkbox" v-model="generalSettings.instant_share_future_scheduled" _v-e19866cc="">\n <i class="form-icon" _v-e19866cc=""></i>{{labels.instant_share_future_scheduled_yes}}\n </label>\n </div>\n </div>\n </div>\n \x3c!-- Upsell --\x3e\n <div class="columns " v-if="!isPro && isInstantShare" _v-e19866cc="">\n <div class="column text-center" _v-e19866cc="">\n <p class="upsell" _v-e19866cc=""><i class="fa fa-lock" _v-e19866cc=""></i> {{labels.instant_share_future_scheduled_upsell}}</p>\n </div>\n </div>\n <span class="divider" v-if="isInstantShare" _v-e19866cc=""></span>\n\n <div class="columns py-2" :class="\'rop-control-container-\'+isPro" _v-e19866cc="">\n <div class="column col-6 col-sm-12 vertical-align rop-control" _v-e19866cc="">\n <b _v-e19866cc="">{{labels.custom_share_title}}</b>\n <p class="text-gray" _v-e19866cc=""><span v-html="labels.custom_share_desc" _v-e19866cc=""></span></p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align text-left rop-control" _v-e19866cc="">\n <div class="form-group" _v-e19866cc="">\n <label id="rop_custom_share_msg" class="form-checkbox" _v-e19866cc="">\n <input type="checkbox" :disabled="!isPro" v-model="generalSettings.custom_messages" _v-e19866cc="">\n <i class="form-icon" _v-e19866cc=""></i>{{labels.custom_share_yes}}\n </label>\n </div>\n </div>\n </div>\n <span class="divider" _v-e19866cc=""></span>\n\n\n <div class="columns py-2" :class="\'rop-control-container-\'+isPro" v-if="isCustomMsgs" _v-e19866cc="">\n <div class="column col-6 col-sm-12 vertical-align rop-control" _v-e19866cc="">\n <b _v-e19866cc="">{{labels.custom_share_order_title}}</b>\n <p class="text-gray" _v-e19866cc="">{{labels.custom_share_order_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align text-left rop-control" _v-e19866cc="">\n <div class="form-group" _v-e19866cc="">\n <label id="rop_custom_share_msg" class="form-checkbox" _v-e19866cc="">\n <input type="checkbox" :disabled="!isPro" v-model="generalSettings.custom_messages_share_order" _v-e19866cc="">\n <i class="form-icon" _v-e19866cc=""></i>{{labels.custom_share_order_yes}}\n </label>\n </div>\n </div>\n </div>\n\n \x3c!-- Upsell --\x3e\n <div class="columns " v-if="!isPro" _v-e19866cc="">\n <div class="column text-center" _v-e19866cc="">\n <p class="upsell" _v-e19866cc=""><i class="fa fa-lock" _v-e19866cc=""></i> {{labels.custom_share_upsell}}</p>\n </div>\n </div>\n <span class="divider" v-if="isCustomMsgs" _v-e19866cc=""></span>\n\n <div class="columns py-2" _v-e19866cc="">\n <div class="column col-6 col-sm-12 vertical-align rop-control" _v-e19866cc="">\n <b _v-e19866cc="">{{labels.housekeeping}}</b>\n <p class="text-gray" _v-e19866cc="">{{labels.housekeeping_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align text-left rop-control" _v-e19866cc="">\n <div class="form-group" _v-e19866cc="">\n <label class="form-checkbox" _v-e19866cc="">\n <input type="checkbox" v-model="generalSettings.housekeeping" _v-e19866cc="">\n <i class="form-icon" _v-e19866cc=""></i>{{labels.housekeeping_yes}}\n </label>\n </div>\n </div>\n </div>\n <span class="divider" _v-e19866cc=""></span>\n\n </div>\n </div>\n <div class="panel-footer text-right" _v-e19866cc="">\n <button class="btn btn-primary" @click="saveGeneralSettings()" _v-e19866cc=""><i class="fa fa-check" v-if="!this.is_loading" _v-e19866cc=""></i> <i class="fa fa-spinner fa-spin" v-else="" _v-e19866cc=""></i> {{labels.save}}\n </button>\n </div>\n </div>\n'},function(t,e,n){var a,s;n(258),a=n(260),s=n(285),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(259);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n\t.icon_box[_v-6ded7d15] {\n\t\twidth: 30px;\n\t\theight: 30px;\n\t\tpadding: 5px;\n\t}\n\n\t.icon_box.no-image[_v-6ded7d15] {\n\t\tpadding: 0;\n\t}\n\n\t.icon_box.has_image > .fa[_v-6ded7d15] {\n\t\twidth: 15px;\n\t\theight: 15px;\n\t\tpadding: 0;\n\t\tline-height: 15px;\n\t}\n\n\t.icon_box.no-image > .fa[_v-6ded7d15] {\n\t\tfont-size: 20px;\n\t\tbackground: transparent;\n\t\tline-height: 30px;\n\t}\n",""])},function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{default:t}}var s=n(18),i=a(s),r=n(261),o=a(r),d=n(264),l=a(d),u=n(269),c=a(u),_=n(52),m=a(_);t.exports={name:"account-selector-view",props:{type:{default:function(){return""},type:String}},data:function(){var t=null;return void 0!==(0,i.default)(this.$store.state.activeAccounts)[0]&&(t=(0,i.default)(this.$store.state.activeAccounts)[0]),{selected_account:t,component_label:"",allow_footer:!0,license:this.$store.state.licence,action:"",labels:this.$store.state.labels.accounts,upsell_link:ropApiSettings.upsell_link,is_loading:!1}},mounted:function(){this.setupData()},filters:{capitalize:function(t){return t?(t=t.toString(),t.charAt(0).toUpperCase()+t.slice(1)):""}},computed:{active_data:function(){return"post-format"===this.type?this.$store.state.activePostFormat:"schedule"===this.type?this.$store.state.activeSchedule:[]},accountsCount:function(){return(0,i.default)(this.$store.state.activeAccounts).length},active_accounts:{get:function(){var t=this.$store.state.activeAccounts,e={};for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return this.$log.info("Available accounts",e),e},set:function(t){this.setupData()}},active_account_name:function(){return this.active_accounts[this.selected_account].user}},watch:{type:function(){this.setupData()}},methods:{setupData:function(){var t=this.type.replace("-","_"),e="";"post-format"===this.type&&(e="post format",this.allow_footer=!0),"schedule"===this.type&&(e="schedule",this.allow_footer=this.license>1),this.action=t,this.component_label=e,this.checkActiveData()},getAccountData:function(){var t=this;if(this.is_loading)return void this.$log.warn("Request in progress...Bail");void 0!==this.active_accounts[this.selected_account]&&(this.is_loading=!0,this.$store.dispatch("fetchAJAXPromise",{req:"get_"+this.action,data:{}}).then(function(e){t.$log.info("Successfully fetched account data",t.type,t.selected_account),t.is_loading=!1},function(e){Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",e),t.is_loading=!1}))},saveAccountData:function(){var t=this;if(this.is_loading)return void this.$log.warn("Request in progress...Bail");this.is_loading=!0,this.$store.dispatch("fetchAJAXPromise",{req:"save_"+this.action,data:{service:this.active_accounts[this.selected_account].service,account_id:this.selected_account,data:this.active_data[this.selected_account]}}).then(function(e){t.is_loading=!1},function(e){t.is_loading=!1,Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",e)})},getIcon:function(t){var e="fa-";return"facebook"===t.service&&(e=e.concat("facebook")),"twitter"===t.service&&(e=e.concat("twitter")),"linkedin"===t.service&&(e=e.concat("linkedin")),"tumblr"===t.service&&(e=e.concat("tumblr")),"pinterest"===t.service&&(e=e.concat("pinterest")),e},resetAccountData:function(){var t=this;if(this.is_loading)return void this.$log.warn("Request in progress...Bail");this.is_loading=!0,this.$store.dispatch("fetchAJAXPromise",{req:"reset_"+this.action,data:{service:this.active_accounts[this.selected_account].service,account_id:this.selected_account}}).then(function(e){t.is_loading=!1,t.$log.info("Succesfully reseted account",t.type)},function(e){t.is_loading=!1,Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",e)}),this.$forceUpdate()},checkActiveData:function(){void 0===this.active_data[this.selected_account]&&this.getAccountData()},setActiveAccount:function(t){return this.is_loading?void this.$log.warn("Request in progress...Bail"):this.selected_account===t?void this.$log.info("Account already active"):(this.$log.info("Switched account data ",this.type,t),this.selected_account=t,void this.checkActiveData())}},components:{"empty-active-accounts":o.default,"post-format":l.default,schedule:c.default,MultipleSelect:m.default}}},function(t,e,n){var a,s;a=n(262),s=n(263),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){"use strict";t.exports={name:"empty-active-accounts",data:function(){return{labels:this.$store.state.labels.accounts,upsell_link:ropApiSettings.upsell_link}},methods:{goToAccounts:function(){this.$store.commit("setTabView","accounts")}}}},function(t,e){t.exports='\n\t<div class="empty">\n\t\t<div class="empty-icon">\n\t\t\t<i class="fa fa-3x fa-user-circle-o"></i>\n\t\t</div>\n\t\t<p class="empty-title h5">{{labels.no_active_accounts}}</p>\n\t\t<p class="empty-subtitle" v-html="labels.no_active_accounts_desc"></p>\n\t\t<button class="btn btn-primary" @click="goToAccounts()">{{labels.go_to_accounts_btn}}</button>\n\t</div>\n'},function(t,e,n){var a,s;n(265),a=n(267),s=n(268),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(266);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n #rop_core .panel-body .text-gray[_v-2ea0dffc] {\n margin: 0;\n line-height: normal;\n }\n\n b[_v-2ea0dffc] {\n margin-bottom: 5px;\n display: block;\n }\n\n #rop_core .input-group .input-group-addon[_v-2ea0dffc] {\n padding: 3px 5px;\n }\n\n @media ( max-width: 600px ) {\n #rop_core .panel-body .text-gray[_v-2ea0dffc] {\n margin-bottom: 10px;\n }\n\n #rop_core .text-right[_v-2ea0dffc] {\n text-align: left;\n }\n }\n",""])},function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{default:t}}var s=n(49),i=a(s),r=n(52),o=a(r);t.exports={name:"post-format",props:["account_id","license"],data:function(){return{labels:this.$store.state.labels.post_format,labels_settings:this.$store.state.labels.settings,upsell_link:ropApiSettings.upsell_link,selected_tax_filter:[]}},created:function(){this.get_taxonomy_list()},methods:{get_taxonomy_list:function(){var t=this;0===this.$store.state.generalSettings.length&&(this.is_loading=!0,this.$log.info("Fetching general settings."),this.$store.dispatch("fetchAJAXPromise",{req:"get_general_settings"}).then(function(e){t.is_loading=!1,t.$log.debug("Succesfully fetched.")},function(e){t.is_loading=!1,t.$log.error("Can not fetch the general settings.")}))},updated_tax_filter:function(t){var e=[];for(var n in t)e.push(t[n].value);var a=[],s=!0,r=!1,o=void 0;try{for(var d,l=(0,i.default)(this.taxonomy);!(s=(d=l.next()).done);s=!0){var u=d.value,c=!0,_=!1,m=void 0;try{for(var f,p=(0,i.default)(e);!(c=(f=p.next()).done);c=!0){var h=f.value;h=parseInt(h);parseInt(u.value)===h&&a.push(u)}}catch(t){_=!0,m=t}finally{try{!c&&p.return&&p.return()}finally{if(_)throw m}}}}catch(t){r=!0,o=t}finally{try{!s&&l.return&&l.return()}finally{if(r)throw o}}this.post_format.taxonomy_filter=a}},computed:{post_format:function(){return this.$store.state.activePostFormat[this.account_id]?this.$store.state.activePostFormat[this.account_id]:[]},isPro:function(){return this.license>0},short_url_service:function(){var t=this.$store.state.activePostFormat[this.account_id]?this.$store.state.activePostFormat[this.account_id]:[];return t.short_url_service?t.short_url_service:""},taxonomy_filter:function(){var t=this.$store.state.activePostFormat[this.account_id]?this.$store.state.activePostFormat[this.account_id]:[];if(t.taxonomy_filter){var e=0,n=!0,a=!1,s=void 0;try{for(var r,o=(0,i.default)(t.taxonomy_filter);!(n=(r=o.next()).done);n=!0){r.value;t.taxonomy_filter[e].selected=!0,e++}}catch(t){a=!0,s=t}finally{try{!n&&o.return&&o.return()}finally{if(a)throw s}}}return t.taxonomy_filter?t.taxonomy_filter:[]},taxonomy:function(){return this.$store.state.generalSettings.available_taxonomies}},watch:{short_url_service:function(){var t=this;this.$store.dispatch("fetchAJAXPromise",{req:"get_shortner_credentials",data:{short_url_service:this.short_url_service}}).then(function(e){t.post_format.shortner_credentials=e},function(t){Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t)})}},filters:{capitalize:function(t){if(!t)return"";t=t.toString().split("_");for(var e="",n=0;n<t.length;n++)e+=t[n].charAt(0).toUpperCase()+t[n].slice(1)+" ";return e}},components:{MultipleSelect:o.default}}},function(t,e){t.exports='\n <div _v-2ea0dffc="">\n <div class="columns py-2" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.post_content_title}}</b>\n <p class="text-gray" _v-2ea0dffc="">{{labels.post_content_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="form-group" _v-2ea0dffc="">\n <select class="form-select" v-model="post_format.post_content" _v-2ea0dffc="">\n <option value="post_title" _v-2ea0dffc="">{{labels.post_content_option_title}}</option>\n <option value="post_content" _v-2ea0dffc="">{{labels.post_content_option_content}}</option>\n <option value="post_title_content" _v-2ea0dffc="">{{labels.post_content_option_title_content}}</option>\n <option value="custom_field" _v-2ea0dffc="">{{labels.post_content_option_custom_field}}</option>\n </select>\n </div>\n </div>\n </div>\n\n <div class="columns py-2" v-if="post_format.post_content === \'custom_field\'" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.custom_meta_title}}</b>\n <p class="text-gray" _v-2ea0dffc="">{{labels.custom_meta_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="form-group" _v-2ea0dffc="">\n <input class="form-input" type="text" v-model="post_format.custom_meta_field" value="" placeholder="" _v-2ea0dffc="">\n </div>\n </div>\n </div>\n\n <span class="divider" _v-2ea0dffc=""></span>\n\n <div class="columns py-2" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.max_char_title}}</b>\n <p class="text-gray" _v-2ea0dffc="">{{labels.max_char_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="form-group" _v-2ea0dffc="">\n <input class="form-input" type="number" v-model="post_format.maximum_length" value="" placeholder="" _v-2ea0dffc="">\n </div>\n </div>\n </div>\n <span class="divider" _v-2ea0dffc=""></span>\n\n <div class="columns py-2" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.add_char_title}}</b>\n <p class="text-gray" _v-2ea0dffc=""><span v-html="labels.add_char_desc" _v-2ea0dffc=""></span></p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="form-group" _v-2ea0dffc="">\n\t\t\t\t\t<textarea class="form-input" v-model="post_format.custom_text" v-bind:placeholder="labels.add_char_placeholder" _v-2ea0dffc="">{{post_format.custom_text}}</textarea>\n </div>\n </div>\n </div>\n\n <div class="columns py-2" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <p class="text-gray" _v-2ea0dffc="">{{labels.add_pos_title}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="form-group" _v-2ea0dffc="">\n <select class="form-select" v-model="post_format.custom_text_pos" _v-2ea0dffc="">\n <option value="beginning" _v-2ea0dffc="">{{labels.add_pos_option_start}}</option>\n <option value="end" _v-2ea0dffc="">{{labels.add_pos_option_end}}</option>\n </select>\n </div>\n </div>\n </div>\n <span class="divider" _v-2ea0dffc=""></span>\n <div class="columns py-2" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.add_link_title}}</b>\n <p class="text-gray" _v-2ea0dffc="">{{labels.add_link_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="input-group" _v-2ea0dffc="">\n <label class="form-checkbox" _v-2ea0dffc="">\n <input type="checkbox" v-model="post_format.include_link" _v-2ea0dffc="">\n <i class="form-icon" _v-2ea0dffc=""></i> {{labels.add_link_yes}}\n </label>\n </div>\n </div>\n </div>\n <span class="divider" _v-2ea0dffc=""></span>\n <div class="columns py-2" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.meta_link_title}}</b>\n <p class="text-gray" _v-2ea0dffc="">{{labels.meta_link_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="input-group" _v-2ea0dffc="">\n <label class="form-checkbox" _v-2ea0dffc="">\n <input type="checkbox" v-model="post_format.url_from_meta" _v-2ea0dffc="">\n <i class="form-icon" _v-2ea0dffc=""></i> {{labels.meta_link_yes}}\n </label>\n </div>\n </div>\n </div>\n\n \x3c!-- Custom Field --\x3e\n <div class="columns py-2" v-if="post_format.url_from_meta" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.meta_link_name_title}}</b>\n <p class="text-gray" _v-2ea0dffc="">{{labels.meta_link_name_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="form-group" _v-2ea0dffc="">\n <input class="form-input" type="text" v-model="post_format.url_meta_key" value="" placeholder="" _v-2ea0dffc="">\n </div>\n </div>\n </div>\n <span class="divider" _v-2ea0dffc=""></span>\n\n <div class="columns py-2" :class="\'rop-control-container-\'+isPro" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align rop-control" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels_settings.taxonomies_title}}</b>\n <p class="text-gray" _v-2ea0dffc=""><span v-html="labels_settings.taxonomies_desc" _v-2ea0dffc=""></span></p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="input-group" _v-2ea0dffc="">\n <multiple-select :disabled="!!isPro" :options="taxonomy" :selected="taxonomy_filter" :name="post_format.taxonomy_filter" :changed-selection="updated_tax_filter" :key="this.account_id" _v-2ea0dffc=""></multiple-select>\n <span class="input-group-addon vertical-align" _v-2ea0dffc="">\n <label class="form-checkbox" _v-2ea0dffc="">\n\t\t\t\t\t\t <input :disabled="!isPro" type="checkbox" v-model="post_format.exclude_taxonomies" _v-2ea0dffc="">\n\t\t\t\t\t\t\t<i class="form-icon" _v-2ea0dffc=""></i>{{labels_settings.taxonomies_exclude}}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</span>\n </div>\n </div>\n </div>\n <div class="columns " v-if="!isPro" _v-2ea0dffc="">\n <div class="column text-center" _v-2ea0dffc="">\n <p class="upsell" _v-2ea0dffc=""><i class="fa fa-lock" _v-2ea0dffc=""></i> {{labels.taxonomy_based_sharing_upsell}}</p>\n </div>\n </div>\n <span class="divider" _v-2ea0dffc=""></span>\n <div class="columns py-2" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.use_shortner_title}}</b>\n <p class="text-gray" _v-2ea0dffc="">{{labels.use_shortner_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="input-group" _v-2ea0dffc="">\n <label class="form-checkbox" _v-2ea0dffc="">\n <input type="checkbox" v-model="post_format.short_url" _v-2ea0dffc="">\n <i class="form-icon" _v-2ea0dffc=""></i> {{labels.use_shortner_yes}}\n </label>\n </div>\n </div>\n </div>\n <div class="columns py-2" v-if="post_format.short_url" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.shortner_title}}</b>\n <p class="text-gray" _v-2ea0dffc="">{{labels.shortner_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="form-group" _v-2ea0dffc="">\n <select class="form-select" v-model="post_format.short_url_service" _v-2ea0dffc="">\n \x3c!-- rviv.ly currently blacklisted --\x3e\n \x3c!-- <option value="rviv.ly">rviv.ly</option> --\x3e\n <option value="bit.ly" _v-2ea0dffc="">bit.ly</option>\n <option value="firebase" _v-2ea0dffc="">google firebase</option>\n <option value="ow.ly" _v-2ea0dffc="">ow.ly</option>\n <option value="is.gd" _v-2ea0dffc="">is.gd</option>\n <option value="rebrand.ly" _v-2ea0dffc="">rebrand.ly</option>\n <option value="wp_short_url" _v-2ea0dffc="">wp_short_url</option>\n </select>\n </div>\n </div>\n </div>\n\n <div class="columns py-2" v-if="post_format.short_url" v-for="( credential, key_name ) in post_format.shortner_credentials" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{ key_name | capitalize }}</b>\n <p class="text-gray" _v-2ea0dffc="">{{labels.shortner_field_desc_start}} "{{key_name}}"\n {{labels.shortner_field_desc_end}}\n <strong _v-2ea0dffc="">{{post_format.short_url_service}}</strong> {{labels.shortner_api_field}}.</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="form-group" _v-2ea0dffc="">\n <input class="form-input" type="text" v-model="post_format.shortner_credentials[key_name]" _v-2ea0dffc="">\n </div>\n </div>\n </div>\n\n <div class="columns py-2" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.hashtags_title}}</b>\n <p class="text-gray" _v-2ea0dffc="">{{labels.hashtags_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="form-group" _v-2ea0dffc="">\n <select class="form-select" v-model="post_format.hashtags" _v-2ea0dffc="">\n <option value="no-hashtags" _v-2ea0dffc="">{{labels.hashtags_option_no}}</option>\n <option value="common-hashtags" _v-2ea0dffc="">{{labels.hashtags_option_common}}</option>\n <option value="categories-hashtags" _v-2ea0dffc="">{{labels.hashtags_option_cats}}</option>\n <option value="tags-hashtags" _v-2ea0dffc="">{{labels.hashtags_option_tags}}</option>\n <option value="custom-hashtags" _v-2ea0dffc="">{{labels.hashtags_option_field}}</option>\n </select>\n </div>\n </div>\n </div>\n <div class="columns py-2" v-if="post_format.hashtags === \'common-hashtags\'" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.hastags_common_title}}</b>\n <p class="text-gray" _v-2ea0dffc="">{{labels.hastags_common_desc}} ",".</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="form-group" _v-2ea0dffc="">\n <input class="form-input" type="text" v-model="post_format.hashtags_common" value="" placeholder="" _v-2ea0dffc="">\n </div>\n </div>\n </div>\n\n <div class="columns py-2" v-if="post_format.hashtags === \'custom-hashtags\'" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.hastags_field_title}}</b>\n <p class="text-gray" _v-2ea0dffc="">{{labels.hastags_field_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="form-group" _v-2ea0dffc="">\n <input class="form-input" type="text" v-model="post_format.hashtags_custom" value="" placeholder="" _v-2ea0dffc="">\n </div>\n </div>\n </div>\n\n <div class="columns py-2" v-if="post_format.hashtags !== \'no-hashtags\'" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.hashtags_length_title}}</b>\n <p class="text-gray" _v-2ea0dffc="">{{labels.hashtags_length_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="form-group" _v-2ea0dffc="">\n <input class="form-input" type="number" v-model="post_format.hashtags_length" value="" placeholder="" _v-2ea0dffc="">\n </div>\n </div>\n </div>\n\n <span class="divider" _v-2ea0dffc=""></span>\n\n <div class="columns py-2" :class="\'rop-control-container-\'+isPro" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align rop-control" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.image_title}}</b>\n <p class="text-gray" _v-2ea0dffc=""><span v-html="labels.image_desc" _v-2ea0dffc=""></span></p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="input-group" _v-2ea0dffc="">\n <label class="form-checkbox" _v-2ea0dffc="">\n <input type="checkbox" v-model="post_format.image" :disabled="!isPro" _v-2ea0dffc="">\n <i class="form-icon" _v-2ea0dffc=""></i> {{labels.image_yes}}\n </label>\n </div>\n </div>\n </div>\n\n <div class="columns " v-if="!isPro" _v-2ea0dffc="">\n <div class="column text-center" _v-2ea0dffc="">\n <p class="upsell" _v-2ea0dffc=""><i class="fa fa-lock" _v-2ea0dffc=""></i> {{labels.image_upsell}}</p>\n </div>\n </div>\n <span class="divider" _v-2ea0dffc=""></span>\n \x3c!-- Google Analytics --\x3e\n <div class="columns py-2" :class="\'rop-control-container-\'+isPro" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align rop-control" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.utm_campaign_medium}}</b>\n <p class="text-gray" _v-2ea0dffc="">{{labels.utm_campaign_medium_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align text-left rop-control" _v-2ea0dffc="">\n <div class="form-group" _v-2ea0dffc="">\n <input type="text" :disabled="!isPro" class="form-input" v-model="post_format.utm_campaign_medium" placeholder="social" _v-2ea0dffc="">\n </div>\n </div>\n </div>\n\n <div class="columns py-2" :class="\'rop-control-container-\'+isPro" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align rop-control" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.utm_campaign_name}}</b>\n <p class="text-gray" _v-2ea0dffc="">{{labels.utm_campaign_name_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align text-left rop-control" _v-2ea0dffc="">\n <div class="form-group" _v-2ea0dffc="">\n <input type="text" :disabled="!isPro" class="form-input" v-model="post_format.utm_campaign_name" placeholder="ReviveOldPost" _v-2ea0dffc="">\n </div>\n </div>\n </div>\n <div class="columns " v-if="!isPro" _v-2ea0dffc="">\n <div class="column text-center" _v-2ea0dffc="">\n <p class="upsell" _v-2ea0dffc=""><i class="fa fa-lock" _v-2ea0dffc=""></i> {{labels.custom_utm_upsell}}</p>\n </div>\n </div>\n <span class="divider" _v-2ea0dffc=""></span>\n </div>\n'},function(t,e,n){var a,s;n(270),a=n(272),s=n(284),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(271);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n\t.rop-control-container-false[_v-07e2d0a2] {\n\t\tcursor:not-allowed !important;\n\t}\n\t#rop_core .panel-body .text-gray[_v-07e2d0a2] {\n\t\tmargin: 0;\n\t\tline-height: normal;\n\t}\n\n\tb[_v-07e2d0a2] {\n\t\tmargin-bottom: 5px;\n\t\tdisplay: block;\n\t}\n\n\t#rop_core .input-group .input-group-addon[_v-07e2d0a2] {\n\t\tpadding: 3px 5px;\n\t}\n\n\t.time-picker[_v-07e2d0a2] {\n\t\tmargin-bottom: 10px;\n\t}\n\n\t@media ( max-width: 600px ) {\n\t\t#rop_core .panel-body .text-gray[_v-07e2d0a2] {\n\t\t\tmargin-bottom: 10px;\n\t\t}\n\n\t\t#rop_core .text-right[_v-07e2d0a2] {\n\t\t\ttext-align: left;\n\t\t}\n\t}\n\n",""])},function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{default:t}}var s=n(75),i=a(s),r=n(273),o=a(r),d=n(86),l=a(d),u=n(0),c=a(u);t.exports={name:"account-schedule",props:["account_id","license"],data:function(){return{days:{Mon:{value:"1",checked:!1},Tue:{value:"2",checked:!1},Wed:{value:"3",checked:!1},Thu:{value:"4",checked:!1},Fri:{value:"5",checked:!1},Sat:{value:"6",checked:!1},Sun:{value:"7",checked:!1}},labels:this.$store.state.labels.schedule,upsell_link:ropApiSettings.upsell_link}},computed:{schedule:function(){return this.$store.state.activeSchedule[this.account_id]?this.$store.state.activeSchedule[this.account_id]:[]},daysObject:function(){var t=this.days;for(var e in t)t[e].checked=this.isChecked(t[e].value);return t},formatedDate:function(){return void 0===this.date_format?"":c.default.utc(this.current_time,"X").format(this.date_format.replace("mm","mm:ss"))},current_time:{get:function(){return this.$store.state.cron_status.current_time},set:function(t){this.$store.state.cron_status.current_time=t}},date_format:function(){return this.$store.state.cron_status.date_format}},methods:{isChecked:function(t){return void 0!==this.schedule.interval_f&&this.schedule.interval_f.week_days.indexOf(t)>-1},getTime:function(t){var e=this.schedule.interval_f.time[t],n=e.split(":");return{HH:n[0],mm:n[1]}},syncTime:function(t,e){void 0!==this.schedule.interval_f.time[e]&&(this.schedule.interval_f.time[e]=t.data.HH+":"+t.data.mm)},addTime:function(){this.schedule.interval_f.time.push("00:00")},rmvTime:function(t){this.schedule.interval_f.time.splice(t,1)},addDay:function(t){this.schedule.interval_f.week_days.push(t)},rmvDay:function(t){var e=this.schedule.interval_f.week_days.indexOf(t);e>-1&&this.schedule.interval_f.week_days.splice(e,1)}},components:{ButtonCheckbox:i.default,CounterInput:l.default,VueTimepicker:o.default}}},function(t,e,n){t.exports=n(274)},function(t,e,n){var a,s;n(275),a=n(278),s=n(281),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(276);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.i(n(277),""),e.push([t.i,"\n",""])},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,".time-picker {\n display: inline-block;\n position: relative;\n font-size: 1em;\n width: 10em;\n font-family: sans-serif;\n vertical-align: middle;\n}\n\n.time-picker * {\n box-sizing: border-box;\n}\n\n.time-picker input.display-time {\n border: 1px solid #d2d2d2;\n width: 10em;\n height: 2.2em;\n padding: 0.3em 0.5em;\n font-size: 1em;\n}\n\n.time-picker .clear-btn {\n position: absolute;\n display: flex;\n flex-flow: column nowrap;\n justify-content: center;\n align-items: center;\n top: 0;\n right: 0;\n bottom: 0;\n margin-top: -0.15em;\n z-index: 3;\n font-size: 1.1em;\n line-height: 1em;\n vertical-align: middle;\n width: 1.3em;\n color: #d2d2d2;\n background: rgba(255,255,255,0);\n text-align: center;\n font-style: normal;\n\n -webkit-transition: color .2s;\n transition: color .2s;\n}\n\n.time-picker .clear-btn:hover {\n color: #797979;\n cursor: pointer;\n}\n\n.time-picker .time-picker-overlay {\n z-index: 2;\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n}\n\n.time-picker .dropdown {\n position: absolute;\n z-index: 5;\n top: calc(2.2em + 2px);\n left: 0;\n background: #fff;\n box-shadow: 0 1px 6px rgba(0,0,0,0.15);\n width: 10em;\n height: 10em;\n font-weight: normal;\n}\n\n.time-picker .dropdown .select-list {\n width: 10em;\n height: 10em;\n overflow: hidden;\n display: flex;\n flex-flow: row nowrap;\n align-items: stretch;\n justify-content: space-between;\n}\n\n.time-picker .dropdown ul {\n padding: 0;\n margin: 0;\n list-style: none;\n\n flex: 1;\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.time-picker .dropdown ul.minutes,\n.time-picker .dropdown ul.seconds,\n.time-picker .dropdown ul.apms{\n border-left: 1px solid #fff;\n}\n\n.time-picker .dropdown ul li {\n text-align: center;\n padding: 0.3em 0;\n color: #161616;\n}\n\n.time-picker .dropdown ul li:not(.hint):hover {\n background: rgba(0,0,0,.08);\n color: #161616;\n cursor: pointer;\n}\n\n.time-picker .dropdown ul li.active,\n.time-picker .dropdown ul li.active:hover {\n background: #41B883;\n color: #fff;\n}\n\n.time-picker .dropdown .hint {\n color: #a5a5a5;\n cursor: default;\n font-size: 0.8em;\n}\n",""])},function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var s=n(18),i=a(s),r=n(279),o=a(r),d={HOUR_TOKENS:["HH","H","hh","h","kk","k"],MINUTE_TOKENS:["mm","m"],SECOND_TOKENS:["ss","s"],APM_TOKENS:["A","a"]};e.default={name:"VueTimepicker",props:{value:{type:Object},hideClearButton:{type:Boolean},format:{type:String},minuteInterval:{type:Number},secondInterval:{type:Number},id:{type:String}},data:function(){return{hours:[],minutes:[],seconds:[],apms:[],showDropdown:!1,muteWatch:!1,hourType:"HH",minuteType:"mm",secondType:"",apmType:"",hour:"",minute:"",second:"",apm:"",fullValues:void 0}},computed:{displayTime:function(){var t=String(this.format||"HH:mm");return this.hour&&(t=t.replace(new RegExp(this.hourType,"g"),this.hour)),this.minute&&(t=t.replace(new RegExp(this.minuteType,"g"),this.minute)),this.second&&this.secondType&&(t=t.replace(new RegExp(this.secondType,"g"),this.second)),this.apm&&this.apmType&&(t=t.replace(new RegExp(this.apmType,"g"),this.apm)),t},showClearBtn:function(){return!!(this.hour&&""!==this.hour||this.minute&&""!==this.minute)}},watch:{format:"renderFormat",minuteInterval:function(t){this.renderList("minute",t)},secondInterval:function(t){this.renderList("second",t)},value:"readValues",displayTime:"fillValues"},methods:{formatValue:function(t,e){switch(t){case"H":case"m":case"s":return String(e);case"HH":case"mm":case"ss":return e<10?"0"+e:String(e);case"h":case"k":return String(e+1);case"hh":case"kk":return e+1<10?"0"+(e+1):String(e+1);default:return""}},checkAcceptingType:function(t,e,n){if(!t||!e||!e.length)return"";for(var a=0;a<t.length;a++)if(e.indexOf(t[a])>-1)return t[a];return n||""},renderFormat:function(t){t=t||this.format,t&&t.length||(t="HH:mm"),this.hourType=this.checkAcceptingType(d.HOUR_TOKENS,t,"HH"),this.minuteType=this.checkAcceptingType(d.MINUTE_TOKENS,t,"mm"),this.secondType=this.checkAcceptingType(d.SECOND_TOKENS,t),this.apmType=this.checkAcceptingType(d.APM_TOKENS,t),this.renderHoursList(),this.renderList("minute"),this.secondType&&this.renderList("second"),this.apmType&&this.renderApmList();var e=this;this.$nextTick(function(){e.readValues()})},renderHoursList:function(){var t="h"===this.hourType||"hh"===this.hourType?12:24;this.hours=[];for(var e=0;e<t;e++)this.hours.push(this.formatValue(this.hourType,e))},renderList:function(t,e){if("second"===t)e=e||this.secondInterval;else{if("minute"!==t)return;e=e||this.minuteInterval}0===e?e=60:e>60?(window.console.warn("`"+t+"-interval` should be less than 60. Current value is",e),e=1):e<1?(window.console.warn("`"+t+"-interval` should be NO less than 1. Current value is",e),e=1):e||(e=1),"minute"===t?this.minutes=[]:this.seconds=[];for(var n=0;n<60;n+=e)"minute"===t?this.minutes.push(this.formatValue(this.minuteType,n)):this.seconds.push(this.formatValue(this.secondType,n))},renderApmList:function(){this.apms=[],this.apmType&&(this.apms="A"===this.apmType?["AM","PM"]:["am","pm"])},readValues:function(){if(this.value&&!this.muteWatch){var t=JSON.parse((0,o.default)(this.value||{})),e=(0,i.default)(t);0!==e.length&&(e.indexOf(this.hourType)>-1&&(this.hour=t[this.hourType]),e.indexOf(this.minuteType)>-1&&(this.minute=t[this.minuteType]),e.indexOf(this.secondType)>-1?this.second=t[this.secondType]:this.second=0,e.indexOf(this.apmType)>-1&&(this.apm=t[this.apmType]),this.fillValues())}},fillValues:function(){var t={},e=this.hour,n=this.hourType,a=e||0===e?Number(e):"",s=this.isTwelveHours(n),i=!(!s||!this.apm)&&String(this.apm).toLowerCase();if(d.HOUR_TOKENS.forEach(function(r){if(r===n)return void(t[r]=e);var o=void 0,d=void 0;switch(r){case"H":case"HH":if(!String(a).length)return void(t[r]="");o=s?"pm"===i?a<12?a+12:a:a%12:a%24,t[r]="HH"===r&&o<10?"0"+o:String(o);break;case"k":case"kk":if(!String(a).length)return void(t[r]="");o=s?"pm"===i?a<12?a+12:a:12===a?24:a:0===a?24:a,t[r]="kk"===r&&o<10?"0"+o:String(o);break;case"h":case"hh":if(i)o=a,d=i||"am";else{if(!String(a).length)return t[r]="",t.a="",void(t.A="");a>11?(d="pm",o=12===a?12:a%12):(d=s?"":"am",o=a%12==0?12:a)}t[r]="hh"===r&&o<10?"0"+o:String(o),t.a=d,t.A=d.toUpperCase()}}),this.minute||0===this.minute){var r=Number(this.minute);t.m=String(r),t.mm=r<10?"0"+r:String(r)}else t.m="",t.mm="";if(this.second||0===this.second){var o=Number(this.second);t.s=String(o),t.ss=o<10?"0"+o:String(o)}else t.s="",t.ss="";this.fullValues=t,this.updateTimeValue(t),this.$emit("change",{data:t})},updateTimeValue:function(t){this.muteWatch=!0;var e=this,n=JSON.parse((0,o.default)(this.value||{})),a={};(0,i.default)(n).forEach(function(e){a[e]=t[e]}),this.$emit("input",a),this.$nextTick(function(){e.muteWatch=!1})},isTwelveHours:function(t){return"h"===t||"hh"===t},toggleDropdown:function(){this.showDropdown=!this.showDropdown},select:function(t,e){"hour"===t?this.hour=e:"minute"===t?this.minute=e:"second"===t?this.second=e:"apm"===t&&(this.apm=e)},clearTime:function(){this.hour="",this.minute="",this.second="",this.apm=""}},mounted:function(){this.renderFormat()}}},function(t,e,n){t.exports={default:n(280),__esModule:!0}},function(t,e,n){var a=n(3),s=a.JSON||(a.JSON={stringify:JSON.stringify});t.exports=function(t){return s.stringify.apply(s,arguments)}},function(t,e){t.exports='\n<span class="time-picker">\n <input class="display-time" :id="id" v-model="displayTime" @click.stop="toggleDropdown" type="text" readonly />\n <span class="clear-btn" v-if="!hideClearButton" v-show="!showDropdown && showClearBtn" @click.stop="clearTime">×</span>\n <div class="time-picker-overlay" v-if="showDropdown" @click.stop="toggleDropdown"></div>\n <div class="dropdown" v-show="showDropdown">\n <div class="select-list">\n <ul class="hours">\n <li class="hint" v-text="hourType"></li>\n <li v-for="hr in hours" v-text="hr" :class="{active: hour === hr}" @click.stop="select(\'hour\', hr)"></li>\n </ul>\n <ul class="minutes">\n <li class="hint" v-text="minuteType"></li>\n <li v-for="m in minutes" v-text="m" :class="{active: minute === m}" @click.stop="select(\'minute\', m)"></li>\n </ul>\n <ul class="seconds" v-if="secondType">\n <li class="hint" v-text="secondType"></li>\n <li v-for="s in seconds" v-text="s" :class="{active: second === s}" @click.stop="select(\'second\', s)"></li>\n </ul>\n <ul class="apms" v-if="apmType">\n <li class="hint" v-text="apmType"></li>\n <li v-for="a in apms" v-text="a" :class="{active: apm === a}" @click.stop="select(\'apm\', a)"></li>\n </ul>\n </div>\n </div>\n</span>\n'},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,n){function a(t){return n(s(t))}function s(t){var e=i[t];if(!(e+1))throw new Error("Cannot find module '"+t+"'.");return e}var i={"./af":87,"./af.js":87,"./ar":88,"./ar-dz":89,"./ar-dz.js":89,"./ar-kw":90,"./ar-kw.js":90,"./ar-ly":91,"./ar-ly.js":91,"./ar-ma":92,"./ar-ma.js":92,"./ar-sa":93,"./ar-sa.js":93,"./ar-tn":94,"./ar-tn.js":94,"./ar.js":88,"./az":95,"./az.js":95,"./be":96,"./be.js":96,"./bg":97,"./bg.js":97,"./bm":98,"./bm.js":98,"./bn":99,"./bn.js":99,"./bo":100,"./bo.js":100,"./br":101,"./br.js":101,"./bs":102,"./bs.js":102,"./ca":103,"./ca.js":103,"./cs":104,"./cs.js":104,"./cv":105,"./cv.js":105,"./cy":106,"./cy.js":106,"./da":107,"./da.js":107,"./de":108,"./de-at":109,"./de-at.js":109,"./de-ch":110,"./de-ch.js":110,"./de.js":108,"./dv":111,"./dv.js":111,"./el":112,"./el.js":112,"./en-SG":113,"./en-SG.js":113,"./en-au":114,"./en-au.js":114,"./en-ca":115,"./en-ca.js":115,"./en-gb":116,"./en-gb.js":116,"./en-ie":117,"./en-ie.js":117,"./en-il":118,"./en-il.js":118,"./en-nz":119,"./en-nz.js":119,"./eo":120,"./eo.js":120,"./es":121,"./es-do":122,"./es-do.js":122,"./es-us":123,"./es-us.js":123,"./es.js":121,"./et":124,"./et.js":124,"./eu":125,"./eu.js":125,"./fa":126,"./fa.js":126,"./fi":127,"./fi.js":127,"./fo":128,"./fo.js":128,"./fr":129,"./fr-ca":130,"./fr-ca.js":130,"./fr-ch":131,"./fr-ch.js":131,"./fr.js":129,"./fy":132,"./fy.js":132,"./ga":133,"./ga.js":133,"./gd":134,"./gd.js":134,"./gl":135,"./gl.js":135,"./gom-latn":136,"./gom-latn.js":136,"./gu":137,"./gu.js":137,"./he":138,"./he.js":138,"./hi":139,"./hi.js":139,"./hr":140,"./hr.js":140,"./hu":141,"./hu.js":141,"./hy-am":142,"./hy-am.js":142,"./id":143,"./id.js":143,"./is":144,"./is.js":144,"./it":145,"./it-ch":146,"./it-ch.js":146,"./it.js":145,"./ja":147,"./ja.js":147,"./jv":148,"./jv.js":148,"./ka":149,"./ka.js":149,"./kk":150,"./kk.js":150,"./km":151,"./km.js":151,"./kn":152,"./kn.js":152,"./ko":153,"./ko.js":153,"./ku":154,"./ku.js":154,"./ky":155,"./ky.js":155,"./lb":156,"./lb.js":156,"./lo":157,"./lo.js":157,"./lt":158,"./lt.js":158,"./lv":159,"./lv.js":159,"./me":160,"./me.js":160,"./mi":161,"./mi.js":161,"./mk":162,"./mk.js":162,"./ml":163,"./ml.js":163,"./mn":164,"./mn.js":164,"./mr":165,"./mr.js":165,"./ms":166,"./ms-my":167,"./ms-my.js":167,"./ms.js":166,"./mt":168,"./mt.js":168,"./my":169,"./my.js":169,"./nb":170,"./nb.js":170,"./ne":171,"./ne.js":171,"./nl":172,"./nl-be":173,"./nl-be.js":173,"./nl.js":172,"./nn":174,"./nn.js":174,"./pa-in":175,"./pa-in.js":175,"./pl":176,"./pl.js":176,"./pt":177,"./pt-br":178,"./pt-br.js":178,"./pt.js":177,"./ro":179,"./ro.js":179,"./ru":180,"./ru.js":180,"./sd":181,"./sd.js":181,"./se":182,"./se.js":182,"./si":183,"./si.js":183,"./sk":184,"./sk.js":184,"./sl":185,"./sl.js":185,"./sq":186,"./sq.js":186,"./sr":187,"./sr-cyrl":188,"./sr-cyrl.js":188,"./sr.js":187,"./ss":189,"./ss.js":189,"./sv":190,"./sv.js":190,"./sw":191,"./sw.js":191,"./ta":192,"./ta.js":192,"./te":193,"./te.js":193,"./tet":194,"./tet.js":194,"./tg":195,"./tg.js":195,"./th":196,"./th.js":196,"./tl-ph":197,"./tl-ph.js":197,"./tlh":198,"./tlh.js":198,"./tr":199,"./tr.js":199,"./tzl":200,"./tzl.js":200,"./tzm":201,"./tzm-latn":202,"./tzm-latn.js":202,"./tzm.js":201,"./ug-cn":203,"./ug-cn.js":203,"./uk":204,"./uk.js":204,"./ur":205,"./ur.js":205,"./uz":206,"./uz-latn":207,"./uz-latn.js":207,"./uz.js":206,"./vi":208,"./vi.js":208,"./x-pseudo":209,"./x-pseudo.js":209,"./yo":210,"./yo.js":210,"./zh-cn":211,"./zh-cn.js":211,"./zh-hk":212,"./zh-hk.js":212,"./zh-tw":213,"./zh-tw.js":213};a.keys=function(){return Object.keys(i)},a.resolve=s,t.exports=a,a.id=283},function(t,e){t.exports='\n\t<div :class="\'rop-control-container-\'+ ( license > 1 ) + \' rop-schedule-tab-container\'" _v-07e2d0a2="">\n\n\t\t<div class="columns py-2 rop-control" _v-07e2d0a2="">\n\t\t\t<div class="column col-6 col-sm-12 vertical-align" _v-07e2d0a2="">\n\t\t\t\t<b _v-07e2d0a2="">{{labels.schedule_type_title}}</b>\n\t\t\t\t<p class="text-gray" _v-07e2d0a2="">{{labels.schedule_type_desc}}</p>\n\t\t\t</div>\n\t\t\t<div class="column col-6 col-sm-12 vertical-align" _v-07e2d0a2="">\n\t\t\t\t<div class="form-group" _v-07e2d0a2="">\n\t\t\t\t\t<select class="form-select" v-model="schedule.type" _v-07e2d0a2="">\n\t\t\t\t\t\t<option value="recurring" _v-07e2d0a2="">{{labels.schedule_type_option_rec}}</option>\n\t\t\t\t\t\t<option value="fixed" _v-07e2d0a2="">{{labels.schedule_type_option_fix}}</option>\n\t\t\t\t\t</select>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t\x3c!-- Fixed Schedule Days --\x3e\n\t\t<div class="columns py-2 rop-control" v-if="schedule.type === \'fixed\'" _v-07e2d0a2="">\n\t\t\t<div class="column col-6 col-sm-12 vertical-align" _v-07e2d0a2="">\n\t\t\t\t<b _v-07e2d0a2="">{{labels.schedule_fixed_days_title}}</b>\n\t\t\t\t<p class="text-gray" _v-07e2d0a2="">{{labels.schedule_fixed_days_desc}}</p>\n\t\t\t</div>\n\t\t\t<div class="column col-6 col-sm-12 vertical-align" _v-07e2d0a2="">\n\t\t\t\t<div class="form-group input-group" _v-07e2d0a2="">\n\t\t\t\t\t<button-checkbox v-for="( data, label ) in daysObject" :key="label" :value="data.value" :label="label" :checked="data.checked" @add-day="addDay" @rmv-day="rmvDay" _v-07e2d0a2=""></button-checkbox>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t\x3c!-- Fixed Schedule time --\x3e\n\t\t<div class="columns py-2 rop-control" v-if="schedule.type === \'fixed\'" _v-07e2d0a2="">\n\t\t\t<div class="column col-6 col-sm-12 vertical-align" _v-07e2d0a2="">\n\t\t\t\t<b _v-07e2d0a2="">{{labels.schedule_fixed_time_title}}</b>\n\t\t\t\t<p class="text-gray" _v-07e2d0a2="">{{labels.schedule_fixed_time_desc}}</p>\n\t\t\t</div>\n\t\t\t<div class="column col-6 col-sm-12 vertical-align" _v-07e2d0a2="">\n\t\t\t\t<div class="form-group" _v-07e2d0a2="">\n\t\t\t\t\t<div class="input-group" v-for="( time, index ) in schedule.interval_f.time" _v-07e2d0a2="">\n\t\t\t\t\t\t<vue-timepicker :minute-interval="5" class="timepicker-style-fix" :value="getTime( index )" @change="syncTime( $event, index )" hide-clear-button="" _v-07e2d0a2=""></vue-timepicker>\n\t\t\t\t\t\t<button class="btn btn-danger input-group-btn" v-if="schedule.interval_f.time.length > 1" @click="rmvTime( index )" _v-07e2d0a2="">\n\t\t\t\t\t\t\t<i class="fa fa-fw fa-minus" _v-07e2d0a2=""></i>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<button class="btn btn-success input-group-btn" v-if="index == schedule.interval_f.time.length - 1" @click="addTime()" _v-07e2d0a2="">\n\t\t\t\t\t\t\t<i class="fa fa-fw fa-plus" _v-07e2d0a2=""></i>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t\x3c!-- Current time --\x3e\n<div class="column col-6 col-sm-12 vertical-align float-right" v-if="schedule.type === \'fixed\'" _v-07e2d0a2="">\n\t\t<div class="toast rop-current-time text-center" v-if="formatedDate" _v-07e2d0a2="">\n\t\t\t\t{{labels.time_now}}: {{ formatedDate }}\n\t\t</div>\n</div>\n\n\t\t<div class="columns py-2 rop-control" v-else="" _v-07e2d0a2="">\n\t\t\t<div class="column col-6 col-sm-12 vertical-align" _v-07e2d0a2="">\n\t\t\t\t<b _v-07e2d0a2="">{{labels.schedule_rec_title}}</b>\n\t\t\t\t<p class="text-gray" _v-07e2d0a2="">{{labels.schedule_rec_desc}}</p>\n\t\t\t</div>\n\t\t\t<div class="column col-6 col-sm-12 vertical-align" _v-07e2d0a2="">\n\t\t\t\t<div class="form-group" _v-07e2d0a2="">\n\t\t\t\t\t<counter-input id="interval_r" :value.sync="schedule.interval_r" _v-07e2d0a2=""></counter-input>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t\x3c!-- Upsell --\x3e\n\t\t<div class="columns py-2" v-if="license < 2" _v-07e2d0a2="">\n\t\t\t<div class="column text-center" _v-07e2d0a2="">\n\t\t\t\t<p class="upsell" _v-07e2d0a2=""><i class="fa fa-lock" _v-07e2d0a2=""></i> {{labels.schedule_upsell}}</p>\n\t\t\t</div>\n\t\t</div>\n\t\t<span class="divider" _v-07e2d0a2=""></span>\n\t</div>\n'},function(t,e){t.exports='\n\t<div class="tab-view" _v-6ded7d15="">\n\t\t<div class="panel-body" _v-6ded7d15="">\n\t\t\t<div class="d-inline-block mt-2 column col-12" _v-6ded7d15="">\n\t\t\t\t<p class="text-gray" _v-6ded7d15=""><i class="fa fa-info-circle" _v-6ded7d15=""></i> <span v-html="labels.accounts_selector" _v-6ded7d15=""></span>\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t\t<empty-active-accounts v-if="accountsCount === 0" _v-6ded7d15=""></empty-active-accounts>\n\t\t\t<div class="container" v-if="accountsCount > 0" _v-6ded7d15="">\n\t\t\t\t<div class="columns" _v-6ded7d15="">\n\t\t\t\t\t<div class="column col-3 col-sm-12 col-md-12 col-xl-3 col-lg-3 col-xs-12 col-rop-selector-accounts" _v-6ded7d15="">\n\t\t\t\t\t\t<span class="divider" _v-6ded7d15=""></span>\n\t\t\t\t\t\t<div v-for="( account, id ) in active_accounts" _v-6ded7d15="">\n\t\t\t\t\t\t\t<div class="rop-selector-account-container" :class="{active: selected_account===id}" @click="setActiveAccount(id)" _v-6ded7d15="">\n\t\t\t\t\t\t\t\t<div class="tile tile-centered rop-account" _v-6ded7d15="">\n\t\t\t\t\t\t\t\t\t<div class="tile-icon" _v-6ded7d15="">\n\t\t\t\t\t\t\t\t\t\t<div class="icon_box" :class=" (account.img ? \'has_image\' : \'no-image\' ) + \' \' +account.service " _v-6ded7d15="">\n\t\t\t\t\t\t\t\t\t\t\t<img class="service_account_image" :src="account.img" v-if="account.img" _v-6ded7d15="">\n\t\t\t\t\t\t\t\t\t\t\t<i class="fa " :class="getIcon(account)" aria-hidden="true" _v-6ded7d15=""></i>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div class="tile-content" _v-6ded7d15="">\n\t\t\t\t\t\t\t\t\t\t<p class="rop-account-name" _v-6ded7d15="">{{account.user}}</p>\n\t\t\t\t\t\t\t\t\t\t<strong class="rop-service-name" _v-6ded7d15="">{{account.service}}</strong>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<span class="divider" _v-6ded7d15=""></span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="column col-9 col-sm-12 col-md-12 col-xl-9 col-lg-9 col-xs-12" :class="\'rop-tab-state-\'+is_loading" _v-6ded7d15="">\n\t\t\t\t\t\t<component :is="type" :account_id="selected_account" :license="license" _v-6ded7d15=""></component>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="panel-footer" v-if="accountsCount > 0" _v-6ded7d15="">\n\t\t\t<div class="panel-actions text-right" v-if="allow_footer" _v-6ded7d15="">\n\t\t\t\t<button class="btn btn-secondary" @click="resetAccountData()" _v-6ded7d15=""><i class="fa fa-ban" v-if="!this.is_loading" _v-6ded7d15=""></i> <i class="fa fa-spinner fa-spin" v-else="" _v-6ded7d15=""></i> {{labels.reset_selector_btn}} {{component_label}}\n\t\t\t\t\t{{labels.for}}\n\t\t\t\t\t<b _v-6ded7d15="">{{active_account_name}}</b>\n\t\t\t\t</button>\n\t\t\t\t<button class="btn btn-primary" @click="saveAccountData()" _v-6ded7d15=""><i class="fa fa-check" v-if="!this.is_loading" _v-6ded7d15=""></i> <i class="fa fa-spinner fa-spin" v-else="" _v-6ded7d15=""></i> {{labels.save_selector_btn}} {{component_label}}\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n'},function(t,e,n){var a,s;a=n(287),s=n(293),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{default:t}}var s=n(18),i=a(s),r=n(288),o=a(r);t.exports={name:"queue-view",computed:{queueCount:function(){return(0,i.default)(this.$store.state.queue).length},queue:function(){return this.$store.state.queue},start_status:function(){return this.$store.state.cron_status.current_status},is_business:function(){return this.$store.state.licence>1}},data:function(){return{is_loading:!1,labels:this.$store.state.labels.queue,upsell_link:ropApiSettings.upsell_link}},watch:{start_status:function(t){this.refreshQueue()}},mounted:function(){this.start_status&&this.refreshQueue(!1)},methods:{refreshQueue:function(t){var e=this;if(this.is_loading)return void this.$log.warn("Request in progress...Bail");this.$store.state.queue=[],this.is_loading=!0,this.$store.dispatch("fetchAJAXPromise",{req:"get_queue",data:{force:t}}).then(function(t){e.is_loading=!1,e.$store.dispatch("fetchAJAX",{req:"manage_cron"})},function(t){e.is_loading=!1,Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t)})}},components:{QueueCard:o.default}}},function(t,e,n){var a,s;n(289),a=n(291),s=n(292),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(290);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n\t.fa[_v-0395a54b] {\n\t\tbackground: transparent;\n\t}\n\t\n\t#rop_core .vertical-align[_v-0395a54b] {\n\t\t-ms-flex-align: end;\n\t\t align-items: flex-end;\n\t}\n\t\n\t#rop_core figure.figure[_v-0395a54b] {\n\t\tmargin: -.7em -2em -1em 0;\n\t}\n\t\n\t@media (max-width: 600px) {\n\t\t#rop_core .vertical-align[_v-0395a54b] {\n\t\t\t-ms-flex-align: center;\n\t\t\t align-items: center;\n\t\t}\n\t\t\n\t\t#rop_core figure.figure[_v-0395a54b] {\n\t\t\tmargin: 10px auto 0;\n\t\t}\n\t}\n",""])},function(t,e,n){"use strict";t.exports={name:"queue-card",props:{id:{default:""},enabled:{default:!1,type:Boolean},card_data:{default:{},type:Object}},data:function(){return{edit:!1,labels:this.$store.state.labels.queue,upsell_link:ropApiSettings.upsell_link,video_placeholder:ROP_ASSETS_URL+"img/video_placeholder.jpg",is_loading:!1,post_edit:{}}},computed:{content:function(){return void 0!==this.card_data.content?this.card_data.content:{}},active_accounts:function(){return this.$store.state.activeAccounts}},mounted:function(){},watch:{},methods:{skipPost:function(t,e){var n=this;if(this.is_loading)return void this.$log.warn("Request in progress...Bail");this.is_loading="skip",this.$store.dispatch("fetchAJAXPromise",{req:"skip_queue_event",data:{account_id:t,post_id:e}}).then(function(t){n.is_loading=!1},function(t){n.is_loading=!1,Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t)})},blockPost:function(t,e){var n=this;if(this.is_loading)return void this.$log.warn("Request in progress...Bail");this.is_loading="block",this.$store.dispatch("fetchAJAXPromise",{req:"block_queue_event",data:{account_id:t,post_id:e}}).then(function(t){n.is_loading=!1},function(t){n.is_loading=!1,Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t)})},toggleEditState:function(){this.edit=!this.edit},getAccountName:function(t){return void 0===this.active_accounts[t]?"":this.active_accounts[t].user},checkCount:function(t){this.post_edit.text="",this.post_edit.text!==t.srcElement.value&&(this.post_edit.text=t.srcElement.value)},saveChanges:function(t,e){var n=this;if(this.is_loading)return void this.$log.warn("Request in progress...Bail");this.is_loading="edit",this.$store.dispatch("fetchAJAXPromise",{req:"update_queue_event",data:{account_id:t,post_id:e,custom_data:this.post_edit}}).then(function(t){n.is_loading=!1,n.toggleEditState()},function(t){n.is_loading=!1,n.toggleEditState(),Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t)})},cancelChanges:function(){this.post_edit={},this.toggleEditState()},uploadImage:function(){var t=wp.media({title:this.labels.insert_media_title,library:{type:"image"},multiple:!1,button:{text:this.labels.insert_media_btn}}),e=this;t.on("select",function(){var n=t.state().get("selection").first().toJSON();e.content.post_image=n.url,e.post_edit.image=n.url}),t.open()},removeImage:function(){var t=this;t.content.post_image=null,t.post_edit.image=null},iconClass:function(t){var e="fa-user";if(null!==t){e="fa-";var n=this.active_accounts[t];void 0!==n&&"facebook"===n.service&&(e=e.concat("facebook facebook")),void 0!==n&&"twitter"===n.service&&(e=e.concat("twitter twitter")),void 0!==n&&"linkedin"===n.service&&(e=e.concat("linkedin linkedin")),void 0!==n&&"tumblr"===n.service&&(e=e.concat("tumblr tumblr")),void 0!==n&&"pinterest"===n.service&&(e=e.concat("pinterest pinterest"))}return e},hashtags:function(t){var e=new RegExp("#\\S+","ig");return t.toString().replace(e,function(t,e,n){return","===t.slice(-1)?"<strong>"+t.substring(0,t.lastIndexOf(","))+"</strong>,":"<strong>"+t+"</strong>"})}}}},function(t,e){t.exports='\n\t<div class="card" _v-0395a54b="">\n\t\t<div class="columns" _v-0395a54b="">\n\t\t\t<div class="column col-sm-12 col-justified" _v-0395a54b="">\n\t\t\t\t<div class="columns" _v-0395a54b="">\n\t\t\t\t\t<div class="column" _v-0395a54b="">\n\t\t\t\t\t\t<p class="text-gray text-left " _v-0395a54b=""><i class="fa fa-clock-o" _v-0395a54b=""></i> {{card_data.date}} <b _v-0395a54b=""><i class="fa fa-at" _v-0395a54b=""></i></b> <i class="service fa" :class="iconClass( card_data.account_id )" _v-0395a54b=""></i>\n\t\t\t\t\t\t\t{{getAccountName(card_data.account_id)}}</p>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="columns" v-if="!edit" _v-0395a54b="">\n\t\t\t\t\t<div class="column col-12" _v-0395a54b="">\n\t\t\t\t\t\t<p v-html="content.content + hashtags( content.hashtags )" _v-0395a54b=""></p>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="form-group columns" v-if="edit" _v-0395a54b="">\n\t\t\t\t\t<div class="column col-12" v-if="content.post_with_image" _v-0395a54b="">\n\t\t\t\t\t\t<label class="form-label" for="image" _v-0395a54b="">{{labels.queue_image}}</label>\n\t\t\t\t\t\t<div class="input-group" _v-0395a54b="">\n\t\t\t\t\t\t\t<span class="input-group-addon" _v-0395a54b=""><i class="fa fa-file-image-o" _v-0395a54b=""></i></span>\n\t\t\t\t\t\t\t<input id="image" type="text" class="form-input" :value="content.post_image" readonly="" _v-0395a54b="">\n\t\t\t\t\t\t\t<button class="btn btn-primary input-group-btn tooltip" @click="uploadImage" :data-tooltip="labels.upload_image" _v-0395a54b="">\n\t\t\t\t\t\t\t\t<i class="fa fa-upload" aria-hidden="true" _v-0395a54b=""></i>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t<button class="btn btn-danger input-group-btn tooltip" @click="removeImage" :data-tooltip="labels.remove_image" _v-0395a54b="">\n\t\t\t\t\t\t\t\t<i class="fa fa-remove" aria-hidden="true" _v-0395a54b=""></i>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="column col-12" _v-0395a54b="">\n\t\t\t\t\t\t<label class="form-label" for="content" _v-0395a54b="">{{labels.queue_content}}</label>\n\t\t\t\t\t\t<textarea class="form-input" id="content" placeholder="" rows="3" @keyup="checkCount" _v-0395a54b="">{{content.content}}</textarea>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="columns col-justified" v-if="!edit" _v-0395a54b="">\n\t\t\t\t\t<div class="column col-3" _v-0395a54b="">\n\t\t\t\t\t\t<button class="btn btn-sm btn-block btn-warning tooltip tooltip-bottom " @click="skipPost(card_data.account_id, card_data.post_id)" :data-tooltip="labels.reschedule_post" :disabled=" ! enabled" _v-0395a54b="">\n\t\t\t\t\t\t\t<i class="fa fa-spinner fa-spin" v-if=" is_loading === \'skip\'" _v-0395a54b=""></i>\n\t\t\t\t\t\t\t<i class="fa fa-step-forward" v-else="" aria-hidden="true" _v-0395a54b=""></i>\n\t\t\t\t\t\t\t{{labels.skip_btn_queue}}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="column col-3" _v-0395a54b="">\n\t\t\t\t\t\t<button class="btn btn-sm btn-block btn-danger tooltip tooltip-bottom " :data-tooltip="labels.ban_post" @click="blockPost(card_data.account_id, card_data.post_id)" :disabled=" ! enabled" _v-0395a54b="">\n\t\t\t\t\t\t\t<i class="fa fa-spinner fa-spin" v-if=" is_loading === \'block\'" _v-0395a54b=""></i>\n\t\t\t\t\t\t\t<i class="fa fa-ban" aria-hidden="true" v-else="" _v-0395a54b=""></i>\n\t\t\t\t\t\t\t{{labels.block_btn_queue}}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="column col-3" _v-0395a54b="">\n\t\t\t\t\t\t<button class="btn btn-sm btn-block btn-primary" @click="toggleEditState" v-if="!edit" :disabled=" ! enabled" _v-0395a54b="">\n\t\t\t\t\t\t\t<i class="fa fa-pencil" aria-hidden="true" _v-0395a54b=""></i> {{labels.edit_queue}}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="column col-3 col-ml-auto text-right" v-if="content.post_url !== \'\'" _v-0395a54b="">\n\t\t\t\t\t\t<p class="m-0" _v-0395a54b="">\n\t\t\t\t\t\t\t<b _v-0395a54b="">{{labels.link_title}}:</b>\n\t\t\t\t\t\t\t<a :href="content.post_url" target="_blank" class="tooltip" :data-tooltip="labels.link_shortned_start + \' \' + ( content.short_url_service == \'\' ? \'permalink\' : content.short_url_service ) " _v-0395a54b="">\n\t\t\t\t\t\t\t\t{{\'{\' + ( content.short_url_service == \'\' ? \'permalink\' : content.short_url_service ) +\n\t\t\t\t\t\t\t\t\'}\'}}</a>\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="columns" v-else="" _v-0395a54b="">\n\t\t\t\t\t<div class="column col-3" _v-0395a54b="">\n\t\t\t\t\t\t<button class="btn btn-sm btn-block btn-success" @click="saveChanges(card_data.account_id, card_data.post_id)" v-if="edit" :disabled=" ! enabled" _v-0395a54b="">\n\t\t\t\t\t\t\t<i class="fa fa-spinner fa-spin" v-if=" is_loading === \'edit\'" _v-0395a54b=""></i>\n\t\t\t\t\t\t\t<i class="fa fa-check" aria-hidden="true" v-else="" _v-0395a54b=""></i>\n\t\t\t\t\t\t\t{{labels.save_edit}}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="column col-3" _v-0395a54b="">\n\t\t\t\t\t\t<button class="btn btn-sm btn-block btn-warning" @click="cancelChanges" v-if="edit" :disabled=" ! enabled" _v-0395a54b="">\n\t\t\t\t\t\t\t<i class="fa fa-times" aria-hidden="true" _v-0395a54b=""></i>\n\t\t\t\t\t\t\t{{labels.cancel_edit}}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="column col-4 col-sm-12 vertical-align" v-if="!edit && content.post_with_image" _v-0395a54b="">\n\t\t\t\t<div v-if="content.post_image !== \'\'" _v-0395a54b="">\n\t\t\t\t\t<figure class="figure" v-if="content.post_image !== \'\'" _v-0395a54b="">\n\t\t\t\t\t\t<img :src="( content.mimetype.type.indexOf(\'image\') > -1 ? content.post_image : video_placeholder )" class="img-fit-cover img-responsive" _v-0395a54b="">\n\t\t\t\t\t</figure>\n\t\t\t\t\n\t\t\t\t</div>\n\t\t\t\t<div class="rop-image-placeholder" v-else="" _v-0395a54b="">\n\t\t\t\t\t<summary _v-0395a54b="">\n\t\t\t\t\t\t<i class="fa fa-file-image-o" _v-0395a54b=""></i>\n\t\t\t\t\t\t{{labels.queue_no_image}}\n\t\t\t\t\t</summary>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n'},function(t,e){t.exports='\n\t<div class="tab-view rop-queue-tab-container">\n\t\t<div class="panel-body" :class="\'rop-tab-state-\'+is_loading">\n\t\t\t<div class="columns" v-if="! start_status">\n\t\t\t\t<div class="column col-12 text-center empty-container">\n\t\t\t\t\t<div class="empty-icon">\n\t\t\t\t\t\t<i class="fa fa-3x fa-info-circle"></i>\n\t\t\t\t\t</div>\n\t\t\t\t\t<p class="empty-title h5">{{labels.sharing_not_started}}</p>\n\t\t\t\t\t<p class="empty-subtitle">{{labels.sharing_not_started_desc}}</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div v-else-if="start_status && queueCount > 0 ">\n\n\t\t\t\t<div class="columns py-2" v-if="! is_business">\n\t\t\t\t\t<div class="column text-center">\n\t\t\t\t\t\t<p class="upsell"><i class="fa fa-lock"></i> <span v-html="labels.biz_only"></span></p>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\x3c!-- When sharing is started but we have the business plan. --\x3e\n\t\t\t\t<div class="d-inline-block mt-2 column col-12">\n\t\t\t\t\t<p class="text-gray info-paragraph"><i class="fa fa-info-circle"></i> {{labels.queue_desc}}</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="empty" v-else-if="start_status && queueCount === 0">\n\t\t\t\t<div class="empty-icon">\n\t\t\t\t\t<i class="fa fa-3x fa-info-circle"></i>\n\t\t\t\t</div>\n\t\t\t\t<p class="empty-title h5">{{labels.no_posts}}</p>\n\t\t\t\t<p class="empty-subtitle" v-html="labels.no_posts_desc"></p>\n\t\t\t</div>\n\t\t\t<div class="columns" v-if="start_status && queueCount > 0">\n\t\t\t\t<div class="column col-12 text-left" v-for=" (data, index) in queue ">\n\t\t\t\t\t<queue-card :card_data="data.post_data" :id="index" :enabled="is_business"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="panel-footer text-rightcade" v-if="start_status">\n\t\t\t<button class="btn btn-secondary" @click="refreshQueue(true)">\n\t\t\t\t<i class="fa fa-refresh" v-if="!is_loading"></i>\n\t\t\t\t<i class="fa fa-spinner fa-spin" v-else></i>\n\t\t\t\t{{labels.refresh_btn}}\n\t\t\t</button>\n\t\t</div>\n\t</div>\n'},function(t,e,n){var a,s;n(295),a=n(297),s=n(298),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(296);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n\t#rop_core .toast.log-toast p[_v-ed733db4] {\n\t\tmargin: 0px;\n\t\tline-height: inherit;\n\t}\n\n\t#rop_core .toast.log-toast[_v-ed733db4]:hover {\n\t\topacity: 0.9;\n\t}\n\n\t#rop_core .toast.log-toast[_v-ed733db4] {\n\t\tpadding: 0.1rem;\n\t\tpadding-left: 10px;\n\t\tmargin-top: 2px;\n\t}\n\n\t#rop_core .container[_v-ed733db4] {\n\t\tmin-height: 400px;\n\t}\n",""])},function(t,e,n){"use strict";var a=n(0),s=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports={name:"logs-view",props:["model"],data:function(){return{is_loading:!1,labels:this.$store.state.labels.logs,upsell_link:ropApiSettings.upsell_link}},mounted:function(){this.getLogs()},computed:{logs:function(){return this.$store.state.page.logs},logs_no:function(){return this.$store.state.cron_status.logs_number}},watch:{logs_no:function(){this.getLogs()}},methods:{getLogs:function(t){var e=this;if(this.is_loading)return void this.$log.warn("Request in progress...Bail");this.is_loading=!0,this.$store.dispatch("fetchAJAXPromise",{req:"get_log",data:{force:t}}).then(function(n){if(e.$log.info("Succesfully fetched logs."),e.is_loading=!1,e.$store.dispatch("fetchAJAX",{req:"manage_cron",data:{action:"status"}}),!0===t){var a={type:"success",show:!1,title:"",message:""};e.$store.commit("updateState",{stateData:a,requestName:"update_toast"})}},function(t){Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t),e.is_loading=!1})},formatDate:function(t){var e=this.$store.state.cron_status.date_format;return"undefined"===e?"":s.default.utc(t,"X").format(e.replace("mm","mm:ss"))}}}},function(t,e){t.exports='\n\t<div class="tab-view" _v-ed733db4="">\n\t\t<div class="panel-body" _v-ed733db4="">\n\t\t\t<div class=" columns mt-2" v-if="logs_no > 0" _v-ed733db4="">\n\t\t\t\t<div class="column col-12 text-right " _v-ed733db4="">\n\t\t\t\t\t<button class="btn btn-secondary " @click="getLogs(true)" _v-ed733db4="">\n\t\t\t\t\t\t<i class="fa fa-remove" v-if="!is_loading" _v-ed733db4=""></i>\n\t\t\t\t\t\t<i class="fa fa-spinner fa-spin" v-else="" _v-ed733db4=""></i>\n\t\t\t\t\t\t{{labels.clear_btn}}\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="columns" _v-ed733db4="">\n\t\t\t\t<div class="empty column col-12" v-if="is_loading" _v-ed733db4="">\n\t\t\t\t\t<div class="empty-icon" _v-ed733db4="">\n\t\t\t\t\t\t<i class="fa fa-3x fa-spinner fa-spin" _v-ed733db4=""></i>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="empty column col-12" v-else-if="logs_no === 0" _v-ed733db4="">\n\t\t\t\t\t<div class="empty-icon" _v-ed733db4="">\n\t\t\t\t\t\t<i class="fa fa-3x fa-info-circle" _v-ed733db4=""></i>\n\t\t\t\t\t</div>\n\t\t\t\t\t<p class="empty-title h5" _v-ed733db4="">{{labels.no_logs}}</p>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="column col-12 mt-2" v-for=" (data, index) in logs " v-else-if="logs_no > 0" _v-ed733db4="">\n\t\t\t\t\t<div class="toast log-toast" :class="\'toast-\' + data.type" _v-ed733db4="">\n\t\t\t\t\t\t<small class="pull-right text-right" _v-ed733db4="">{{formatDate ( data.time ) }}</small>\n\t\t\t\t\t\t<p _v-ed733db4="">{{data.message}}</p>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n'},function(t,e,n){var a,s;n(300),a=n(302),s=n(303),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(301);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n\t#rop_core .toast.hidden {\n\t\tdisplay: none;\n\t}\n\t#rop_core .toast {\n\t\tmargin: 10px 0;\n\t}\n",""])},function(t,e,n){"use strict";t.exports={name:"toast",computed:{toast:function(){return this.$store.state.toast},toastTypeClass:function(){return{"toast-primary":"info"===this.toast.type,"toast-success":"success"===this.toast.type,"toast-warning":"warning"===this.toast.type,"toast-error":"error"===this.toast.type,hidden:!1===this.toast.show}},iconClass:function(){return{"fa-info-circle":"info"===this.toast.type,"fa-check-circle":"success"===this.toast.type,"fa-exclamation-triangle":"warning"===this.toast.type,"fa-exclamation-circle":"error"===this.toast.type}}},mounted:function(){},created:function(){},methods:{closeThis:function(){this.toast.show=!1}}}},function(t,e){t.exports='\n\t<div class="toast" :class="toastTypeClass" >\n\t\t<button class="btn btn-clear float-right" @click="closeThis"></button>\n\t\t<b><i class="fa" :class="iconClass"></i> {{ toast.title }}</b><br/>\n\t\t<small>{{ toast.message }}</small>\n\t</div>\n'},function(t,e,n){var a,s;a=n(305),s=n(310),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{default:t}}var s=n(18),i=a(s),r=n(306),o=a(r),d=n(0),l=a(d);n(309),t.exports={name:"cowntdown",props:["current_time"],data:function(){return{now:(0,o.default)((new Date).getTime()/1e3),timediff:"",diff_seconds:0,labels:this.$store.state.labels.general,upsell_link:ropApiSettings.upsell_link}},computed:{toTime:function(){return this.$store.state.cron_status.next_event_on},isOn:function(){return this.$store.state.cron_status.current_status},accounts_no:function(){return(0,i.default)(this.$store.state.activeAccounts).length}},watch:{current_time:function(t){if(this.isOn){var e=l.default.utc(t,"X"),n=l.default.utc(this.toTime,"X"),a=l.default.duration(n.diff(e));this.diff_seconds=a.as("second"),this.diff_seconds>0?this.timediff=a.format("d [days], h [hours], m [minutes], s [seconds]"):(this.$store.dispatch("fetchAJAX",{req:"manage_cron"}),this.timediff=this.labels.sharing_now)}}}}},function(t,e,n){t.exports={default:n(307),__esModule:!0}},function(t,e,n){n(308),t.exports=n(3).Math.trunc},function(t,e,n){var a=n(21);a(a.S,"Math",{trunc:function(t){return(t>0?Math.floor:Math.ceil)(t)}})},function(t,e,n){var a,s,i;/*! Moment Duration Format v2.2.2
|
17 |
* https://github.com/jsmreese/moment-duration-format
|
18 |
* Date: 2018-02-16
|
19 |
*
|
13 |
* https://github.com/pagekit/vue-resource
|
14 |
* Released under the MIT License.
|
15 |
*/
|
16 |
+
var ot=2;a.reject=function(t){return new a(function(e,n){n(t)})},a.resolve=function(t){return new a(function(e,n){e(t)})},a.all=function(t){return new a(function(e,n){var s=0,i=[];0===t.length&&e(i);for(var r=0;r<t.length;r+=1)a.resolve(t[r]).then(function(n){return function(a){i[n]=a,(s+=1)===t.length&&e(i)}}(r),n)})},a.race=function(t){return new a(function(e,n){for(var s=0;s<t.length;s+=1)a.resolve(t[s]).then(e,n)})};var dt=a.prototype;dt.resolve=function(t){var e=this;if(e.state===ot){if(t===e)throw new TypeError("Promise settled with itself.");var n=!1;try{var a=t&&t.then;if(null!==t&&"object"==typeof t&&"function"==typeof a)return void a.call(t,function(t){n||e.resolve(t),n=!0},function(t){n||e.reject(t),n=!0})}catch(t){return void(n||e.reject(t))}e.state=0,e.value=t,e.notify()}},dt.reject=function(t){var e=this;if(e.state===ot){if(t===e)throw new TypeError("Promise settled with itself.");e.state=1,e.value=t,e.notify()}},dt.notify=function(){var t=this;d(function(){if(t.state!==ot)for(;t.deferred.length;){var e=t.deferred.shift(),n=e[0],a=e[1],s=e[2],i=e[3];try{0===t.state?s("function"==typeof n?n.call(void 0,t.value):t.value):1===t.state&&("function"==typeof a?s(a.call(void 0,t.value)):i(t.value))}catch(t){i(t)}}})},dt.then=function(t,e){var n=this;return new a(function(a,s){n.deferred.push([t,e,a,s]),n.notify()})},dt.catch=function(t){return this.then(void 0,t)},"undefined"==typeof Promise&&(window.Promise=a),s.all=function(t,e){return new s(Promise.all(t),e)},s.resolve=function(t,e){return new s(Promise.resolve(t),e)},s.reject=function(t,e){return new s(Promise.reject(t),e)},s.race=function(t,e){return new s(Promise.race(t),e)};var lt=s.prototype;lt.bind=function(t){return this.context=t,this},lt.then=function(t,e){return t&&t.bind&&this.context&&(t=t.bind(this.context)),e&&e.bind&&this.context&&(e=e.bind(this.context)),new s(this.promise.then(t,e),this.context)},lt.catch=function(t){return t&&t.bind&&this.context&&(t=t.bind(this.context)),new s(this.promise.catch(t),this.context)},lt.finally=function(t){return this.then(function(e){return t.call(this),e},function(e){return t.call(this),Promise.reject(e)})};var ut,ct={},_t=ct.hasOwnProperty,mt=[],ft=mt.slice,pt=!1,ht="undefined"!=typeof window,vt=Array.isArray,yt=Object.assign||Y;E.options={url:"",root:null,params:{}},E.transform={template:$,query:T,root:D},E.transforms=["template","query","root"],E.params=function(t){var e=[],n=encodeURIComponent;return e.add=function(t,e){f(e)&&(e=e()),null===e&&(e=""),this.push(n(t)+"="+n(e))},W(e,t),e.join("&").replace(/%20/g,"+")},E.parse=function(t){var e=document.createElement("a");return document.documentMode&&(e.href=t,t=e.href),e.href=t,{href:e.href,protocol:e.protocol?e.protocol.replace(/:$/,""):"",port:e.port,host:e.host,hostname:e.hostname,pathname:"/"===e.pathname.charAt(0)?e.pathname:"/"+e.pathname,search:e.search?e.search.replace(/^\?/,""):"",hash:e.hash?e.hash.replace(/^#/,""):""}};var gt=ht&&"withCredentials"in new XMLHttpRequest,Mt=function(t){var e=this;this.map={},L(t,function(t,n){return e.append(n,t)})};Mt.prototype.has=function(t){return null!==Q(this.map,t)},Mt.prototype.get=function(t){var e=this.map[Q(this.map,t)];return e?e.join():null},Mt.prototype.getAll=function(t){return this.map[Q(this.map,t)]||[]},Mt.prototype.set=function(t,e){this.map[tt(Q(this.map,t)||t)]=[l(e)]},Mt.prototype.append=function(t,e){var n=this.map[Q(this.map,t)];n?n.push(l(e)):this.set(t,e)},Mt.prototype.delete=function(t){delete this.map[Q(this.map,t)]},Mt.prototype.deleteAll=function(){this.map={}},Mt.prototype.forEach=function(t,e){var n=this;L(this.map,function(a,s){L(a,function(a){return t.call(e,a,s,n)})})};var Lt=function(t,e){var n=e.url,a=e.headers,s=e.status,i=e.statusText;this.url=n,this.ok=s>=200&&s<300,this.status=s||0,this.statusText=i||"",this.headers=new Mt(a),this.body=t,m(t)?this.bodyText=t:v(t)&&(this.bodyBlob=t,nt(t)&&(this.bodyText=et(t)))};Lt.prototype.blob=function(){return g(this.bodyBlob)},Lt.prototype.text=function(){return g(this.bodyText)},Lt.prototype.json=function(){return g(this.text(),function(t){return JSON.parse(t)})},Object.defineProperty(Lt.prototype,"data",{get:function(){return this.body},set:function(t){this.body=t}});var bt=function(t){this.body=null,this.params={},yt(this,t,{method:_(t.method||"GET")}),this.headers instanceof Mt||(this.headers=new Mt(this.headers))};bt.prototype.getUrl=function(){return E(this)},bt.prototype.getBody=function(){return this.body},bt.prototype.respondWith=function(t,e){return new Lt(t,yt(e||{},{url:this.getUrl()}))};var kt={Accept:"application/json, text/plain, */*"},Yt={"Content-Type":"application/json;charset=utf-8"};at.options={},at.headers={put:Yt,post:Yt,patch:Yt,delete:Yt,common:kt,custom:{}},at.interceptor={before:U,method:G,jsonp:V,json:z,form:I,header:q,cors:N},at.interceptors=["before","method","jsonp","json","form","header","cors"],["get","delete","head","jsonp"].forEach(function(t){at[t]=function(e,n){return this(yt(n||{},{url:e,method:t}))}}),["post","put","patch"].forEach(function(t){at[t]=function(e,n,a){return this(yt(a||{},{url:e,method:t,body:n}))}}),st.actions={get:{method:"GET"},save:{method:"POST"},query:{method:"GET"},update:{method:"PUT"},remove:{method:"DELETE"},delete:{method:"DELETE"}},"undefined"!=typeof window&&window.Vue&&window.Vue.use(rt),e.default=rt},function(t,e){},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n(39),s=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default={install:s.default.install}},function(t,e,n){"use strict";function a(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){function t(t,n){var a={};return n.forEach(function(s){n.indexOf(s)>=n.indexOf(t.logLevel)?a[s]=function(){for(var n=arguments.length,a=Array(n),r=0;r<n;r++)a[r]=arguments[r];var o=i(),d=t.showMethodName?o+" "+t.separator+" ":"",l=t.showLogLevel?s+" "+t.separator+" ":"",u=t.stringifyArguments?a.map(function(t){return JSON.stringify(t)}):a;e(s,l,d,u,t.showConsoleColors)}:a[s]=function(){}}),a}function e(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(arguments.length>4&&void 0!==arguments[4]&&arguments[4]&&("warn"===t||"error"===t||"fatal"===t)){var i;(i=console)["fatal"===t?"error":t].apply(i,[e,n].concat(a(s)))}else{var r;(r=console).log.apply(r,[e,n].concat(a(s)))}}function n(t,e){return!(!(t.logLevel&&"string"==typeof t.logLevel&&e.indexOf(t.logLevel)>-1)||t.stringifyArguments&&"boolean"!=typeof t.stringifyArguments||t.showLogLevel&&"boolean"!=typeof t.showLogLevel||t.showConsoleColors&&"boolean"!=typeof t.showConsoleColors||t.separator&&("string"!=typeof t.separator||"string"==typeof t.separator&&t.separator.length>3)||t.showMethodName&&"boolean"!=typeof t.showMethodName)}function s(e,a){if(a=Object.assign(r,a),!n(a,o))throw new Error("Provided options for vuejs-logger are not valid.");e.$log=t(a,o),e.prototype.$log=e.$log}function i(){var t={};try{throw new Error("")}catch(e){t=e}var e=t.stack.split("\n")[3];return/ /.test(e)&&(e=e.trim().split(" ")[1]),e&&e.includes(".")&&(e=e.split(".")[1]),e}var r={logLevel:"debug",separator:"|",stringifyArguments:!1,showLogLevel:!1,showMethodName:!1,showConsoleColors:!1},o=["debug","info","warn","error","fatal"];return{install:s,isValidOptions:n,print:e,initLoggerInstance:t,logLevels:o}}()},function(t,e,n){var a=n(9),s=n(14),i=n(42)(!1),r=n(19)("IE_PROTO");t.exports=function(t,e){var n,o=s(t),d=0,l=[];for(n in o)n!=r&&a(o,n)&&l.push(n);for(;e.length>d;)a(o,n=e[d++])&&(~i(l,n)||l.push(n));return l}},function(t,e,n){var a=n(22);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==a(t)?t.split(""):Object(t)}},function(t,e,n){var a=n(14),s=n(43),i=n(44);t.exports=function(t){return function(e,n,r){var o,d=a(e),l=s(d.length),u=i(r,l);if(t&&n!=n){for(;l>u;)if((o=d[u++])!=o)return!0}else for(;l>u;u++)if((t||u in d)&&d[u]===n)return t||u||0;return!t&&-1}}},function(t,e,n){var a=n(15),s=Math.min;t.exports=function(t){return t>0?s(a(t),9007199254740991):0}},function(t,e,n){var a=n(15),s=Math.max,i=Math.min;t.exports=function(t,e){return t=a(t),t<0?s(t+e,0):i(t,e)}},function(t,e,n){var a=n(46);t.exports=function(t,e,n){if(a(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,a){return t.call(e,n,a)};case 3:return function(n,a,s){return t.call(e,n,a,s)}}return function(){return t.apply(e,arguments)}}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,n){t.exports=!n(5)&&!n(17)(function(){return 7!=Object.defineProperty(n(27)("div"),"a",{get:function(){return 7}}).a})},function(t,e,n){var a=n(12);t.exports=function(t,e){if(!a(t))return t;var n,s;if(e&&"function"==typeof(n=t.toString)&&!a(s=n.call(t)))return s;if("function"==typeof(n=t.valueOf)&&!a(s=n.call(t)))return s;if(!e&&"function"==typeof(n=t.toString)&&!a(s=n.call(t)))return s;throw TypeError("Can't convert object to primitive value")}},function(t,e,n){t.exports={default:n(56),__esModule:!0}},function(t,e,n){"use strict";var a=n(24),s=n(21),i=n(61),r=n(6),o=n(20),d=n(62),l=n(51),u=n(66),c=n(7)("iterator"),_=!([].keys&&"next"in[].keys()),m=function(){return this};t.exports=function(t,e,n,f,p,h,v){d(n,e,f);var y,g,M,L=function(t){if(!_&&t in w)return w[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},b=e+" Iterator",k="values"==p,Y=!1,w=t.prototype,D=w[c]||w["@@iterator"]||p&&w[p],T=D||L(p),x=p?k?L("entries"):T:void 0,S="Array"==e?w.entries||D:D;if(S&&(M=u(S.call(new t)))!==Object.prototype&&M.next&&(l(M,b,!0),a||"function"==typeof M[c]||r(M,c,m)),k&&D&&"values"!==D.name&&(Y=!0,T=function(){return D.call(this)}),a&&!v||!_&&!Y&&w[c]||r(w,c,T),o[e]=T,o[b]=m,p)if(y={values:k?T:L("values"),keys:h?T:L("keys"),entries:x},v)for(g in y)g in w||i(w,g,y[g]);else s(s.P+s.F*(_||Y),e,y);return y}},function(t,e,n){var a=n(16).f,s=n(9),i=n(7)("toStringTag");t.exports=function(t,e,n){t&&!s(t=n?t:t.prototype,i)&&a(t,i,{configurable:!0,value:e})}},function(t,e,n){var a,s;a=n(72),s=n(74),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){n(54),t.exports=n(3).Object.keys},function(t,e,n){var a=n(29),s=n(30);n(55)("keys",function(){return function(t){return s(a(t))}})},function(t,e,n){var a=n(21),s=n(3),i=n(17);t.exports=function(t,e){var n=(s.Object||{})[t]||Object[t],r={};r[t]=e(n),a(a.S+a.F*i(function(){n(1)}),"Object",r)}},function(t,e,n){n(57),n(67),t.exports=n(69)},function(t,e,n){n(58);for(var a=n(4),s=n(6),i=n(20),r=n(7)("toStringTag"),o="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),d=0;d<o.length;d++){var l=o[d],u=a[l],c=u&&u.prototype;c&&!c[r]&&s(c,r,l),i[l]=i.Array}},function(t,e,n){"use strict";var a=n(59),s=n(60),i=n(20),r=n(14);t.exports=n(50)(Array,"Array",function(t,e){this._t=r(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,s(1)):"keys"==e?s(0,n):"values"==e?s(0,t[n]):s(0,[n,t[n]])},"values"),i.Arguments=i.Array,a("keys"),a("values"),a("entries")},function(t,e){t.exports=function(){}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,n){t.exports=n(6)},function(t,e,n){"use strict";var a=n(63),s=n(28),i=n(51),r={};n(6)(r,n(7)("iterator"),function(){return this}),t.exports=function(t,e,n){t.prototype=a(r,{next:s(1,n)}),i(t,e+" Iterator")}},function(t,e,n){var a=n(11),s=n(64),i=n(26),r=n(19)("IE_PROTO"),o=function(){},d=function(){var t,e=n(27)("iframe"),a=i.length;for(e.style.display="none",n(65).appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write("<script>document.F=Object<\/script>"),t.close(),d=t.F;a--;)delete d.prototype[i[a]];return d()};t.exports=Object.create||function(t,e){var n;return null!==t?(o.prototype=a(t),n=new o,o.prototype=null,n[r]=t):n=d(),void 0===e?n:s(n,e)}},function(t,e,n){var a=n(16),s=n(11),i=n(30);t.exports=n(5)?Object.defineProperties:function(t,e){s(t);for(var n,r=i(e),o=r.length,d=0;o>d;)a.f(t,n=r[d++],e[n]);return t}},function(t,e,n){var a=n(4).document;t.exports=a&&a.documentElement},function(t,e,n){var a=n(9),s=n(29),i=n(19)("IE_PROTO"),r=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=s(t),a(t,i)?t[i]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?r:null}},function(t,e,n){"use strict";var a=n(68)(!0);n(50)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=a(e,n),this._i+=t.length,{value:t,done:!1})})},function(t,e,n){var a=n(15),s=n(13);t.exports=function(t){return function(e,n){var i,r,o=String(s(e)),d=a(n),l=o.length;return d<0||d>=l?t?"":void 0:(i=o.charCodeAt(d),i<55296||i>56319||d+1===l||(r=o.charCodeAt(d+1))<56320||r>57343?t?o.charAt(d):i:t?o.slice(d,d+2):r-56320+(i-55296<<10)+65536)}}},function(t,e,n){var a=n(11),s=n(70);t.exports=n(3).getIterator=function(t){var e=s(t);if("function"!=typeof e)throw TypeError(t+" is not iterable!");return a(e.call(t))}},function(t,e,n){var a=n(71),s=n(7)("iterator"),i=n(20);t.exports=n(3).getIteratorMethod=function(t){if(void 0!=t)return t[s]||t["@@iterator"]||i[a(t)]}},function(t,e,n){var a=n(22),s=n(7)("toStringTag"),i="Arguments"==a(function(){return arguments}()),r=function(t,e){try{return t[e]}catch(t){}};t.exports=function(t){var e,n,o;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=r(e=Object(t),s))?n:i?a(e):"Object"==(o=a(e))&&"function"==typeof e.callee?"Arguments":o}},function(t,e,n){"use strict";function a(t,e){var n=void 0;for(n=0;n<e.length;n++)if(e[n]===t)return!0;return!1}var s=n(49),i=function(t){return t&&t.__esModule?t:{default:t}}(s),r=n(73);t.exports={name:"multiple-select",mixins:[r.mixin],props:{options:{default:function(){return[]},type:Array},disabled:{default:!0,type:Boolean},selected:{default:function(){return[]},type:Array},placeHolderText:{default:"Please select something",type:String},changedSelection:{default:function(t){return t},type:Function},dontLock:{default:!1,type:Boolean},is_pro_version:{default:!1,type:Boolean},apply_limit:{default:!1,type:Boolean}},mounted:function(){var t=!0,e=!1,n=void 0;try{for(var a,s=(0,i.default)(this.selected);!(t=(a=s.next()).done);t=!0){var r=a.value;if(r.selected){var o=0,d=!0,l=!1,u=void 0;try{for(var c,_=(0,i.default)(this.options);!(d=(c=_.next()).done);d=!0){c.value.value===r.value&&(this.options[o].selected=r.selected),o++}}catch(t){l=!0,u=t}finally{try{!d&&_.return&&_.return()}finally{if(l)throw u}}}}}catch(t){e=!0,n=t}finally{try{!t&&s.return&&s.return()}finally{if(e)throw n}}},updated:function(){var t=!0,e=!1,n=void 0;try{for(var a,s=(0,i.default)(this.selected);!(t=(a=s.next()).done);t=!0){var r=a.value;if(r.selected){var o=0,d=!0,l=!1,u=void 0;try{for(var c,_=(0,i.default)(this.options);!(d=(c=_.next()).done);d=!0){c.value.value===r.value&&(this.options[o].selected=r.selected),o++}}catch(t){l=!0,u=t}finally{try{!d&&_.return&&_.return()}finally{if(l)throw u}}}}}catch(t){e=!0,n=t}finally{try{!t&&s.return&&s.return()}finally{if(e)throw n}}},created:function(){var t=0,e=!0,n=!1,a=void 0;try{for(var s,r=(0,i.default)(this.selected);!(e=(s=r.next()).done);e=!0){var o=s.value;if(o.selected){var d=0,l=!0,u=!1,c=void 0;try{for(var _,m=(0,i.default)(this.options);!(l=(_=m.next()).done);l=!0){_.value.value===o.value&&(this.options[d].selected=o.selected,t++),d++}}catch(t){u=!0,c=t}finally{try{!l&&m.return&&m.return()}finally{if(u)throw c}}}}}catch(t){n=!0,a=t}finally{try{!e&&r.return&&r.return()}finally{if(n)throw a}}this.rand=Math.round(1e3*Math.random());var f=0,p=!0,h=!1,v=void 0;try{for(var y,g=(0,i.default)(this.options);!(p=(y=g.next()).done);p=!0){y.value;this.options[f].selected=!1,f++}}catch(t){h=!0,v=t}finally{try{!p&&g.return&&g.return()}finally{if(h)throw v}}},data:function(){return{search:"",highlighted:-1,no_results:!1,labels:this.$store.state.labels.general,upsell_link:ropApiSettings.upsell_link,magic_flag:!1,rand:0}},watch:{search:function(t){this.$emit("update",t)},selected:function(t){this.$emit("display-limiter-notice",this.selected.length)}},computed:{is_focused:function(){return{"is-focused":!0===this.magic_flag}},is_visible:function(){return{"d-none":!1===this.magic_flag}},is_one:function(){if(!this.dontLock){if(1===this.options.length&&!1===this.options[0].selected)return!0;if(1===this.options.length&&!0===this.options[0].selected)return!0}return!1},autocomplete_placeholder:function(){return this.selected.length>0?"":this.placeHolderText},is_disabled:function(){return!this.disabled},has_results:function(){var t=0,e=!0,n=!1,a=void 0;try{for(var s,r=(0,i.default)(this.options);!(e=(s=r.next()).done);e=!0){var o=s.value;this.filterSearch(o)&&t++}}catch(t){n=!0,a=t}finally{try{!e&&r.return&&r.return()}finally{if(n)throw a}}return!t}},methods:{closeDropdown:function(){this.magic_flag=!1},highlightItem:function(){arguments.length>0&&void 0!==arguments[0]&&arguments[0]?this.highlighted--:this.highlighted++;var t=this.$refs.autocomplete_results.children.length-1;t<0&&(t=0),this.highlighted>t&&(this.highlighted=0),this.highlighted<0&&(this.highlighted=t),this.$refs.autocomplete_results.children[this.highlighted].firstChild.focus()},popLast:function(){""===this.search&&(this.selected.pop(),this.magic_flag=!1)},markMatch:function(t,e){var n=t;if(-1!==t.toLowerCase().indexOf(e.toLowerCase())&&""!==e){var a=new RegExp(e,"ig");n=t.replace(a,function(t){return"<mark>"+t+"</mark>"})}return n},filterSearch:function(t){return(-1!==t.name.toLowerCase().indexOf(this.search.toLowerCase())||""===this.search)&&(!t.selected&&!a(t,this.selected))},addToSelected:function(t){if(!this.is_disabled&&!1!==this.limit_selection()){var e=this.options[t];e.selected=!0,this.selected.push(e),this.$refs.search.focus(),this.magic_flag=!1,this.search="",this.changedSelection(this.selected)}},removeSelected:function(t){this.is_disabled||(this.selected.splice(t,1),this.$refs.search.focus(),this.magic_flag=!1,this.search="",this.changedSelection(this.selected))},limit_selection:function(){return!(!0===this.apply_limit&&!1===this.is_pro_version&&this.selected.length>3)||(this.$refs.search.focus(),this.magic_flag=!1,this.search="",!1)}}}},function(t,e,n){"use strict";function a(t,e,n){s(t);var a=n.context,i=e.value;if("function"==typeof i){var o=!1;setTimeout(function(){o=!0},0),t[r]=function(e){var n=e.path||(e.composedPath?e.composedPath():void 0);if(o&&(n?n.indexOf(t)<0:!t.contains(e.target)))return i.call(a,e)},document.documentElement.addEventListener("click",t[r],!1)}}function s(t){document.documentElement.removeEventListener("click",t[r],!1),delete t[r]}var i=n(8);i="default"in i?i.default:i;/^2\./.test(i.version)||i.util.warn("VueClickaway 2.2.2 only supports Vue 2.x, and does not support Vue "+i.version);var r="_vue_clickaway_handler",o={bind:a,update:function(t,e){e.value!==e.oldValue&&a(t,e)},unbind:s},d={directives:{onClickaway:o}};e.version="2.2.2",e.directive=o,e.mixin=d},function(t,e){t.exports='\n\t<div class="form-autocomplete" style="width: 100%;" v-on-clickaway="closeDropdown">\n\t\t\x3c!-- autocomplete input container --\x3e\n\t\t<div class="form-autocomplete-input form-input" :class="is_focused">\n\t\t\t\n\t\t\t\x3c!-- autocomplete chips --\x3e\n\t\t\t<label class="chip" v-for="( option, index ) in selected">\n\t\t\t\t{{option.name}}\n\t\t\t\t<a href="#" class="btn btn-clear" aria-label="Close" @click.prevent="removeSelected(index)"\n\t\t\t\t role="button"></a>\n\t\t\t</label>\n\t\t\t\n\t\t\t\x3c!-- autocomplete real input box --\x3e\n\t\t\t<input style="height: 1.0rem;" class="form-input" type="text" ref="search" v-model="search"\n\t\t\t :placeholder="autocomplete_placeholder" @click="magic_flag = true" @focus="magic_flag = true"\n\t\t\t @keyup="magic_flag = true" @keydown.8="popLast()" @keydown.38="highlightItem(true)"\n\t\t\t @keydown.40="highlightItem()" :disabled="is_disabled">\n\t\t</div>\n\t\t\n\t\t\x3c!-- autocomplete suggestion list --\x3e\n\t\t<ul class="menu" ref="autocomplete_results" :class="is_visible"\n\t\t style="overflow-y: scroll; max-height: 120px">\n\t\t\t\x3c!-- menu list chips --\x3e\n\t\t\t<li class="menu-item" v-for="( option, index ) in options" v-if="filterSearch(option)">\n\t\t\t\t<a href="#" @click.prevent="addToSelected(index)" @keydown.38="highlightItem(true)"\n\t\t\t\t @keydown.40="highlightItem()">\n\t\t\t\t\t<div class="tile tile-centered">\n\t\t\t\t\t\t<div class="tile-content" v-html="markMatch(option.name, search)"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t\t<li v-if="has_results">\n\t\t\t\t<a href="#">\n\t\t\t\t\t<div class="tile tile-centered">\n\t\t\t\t\t\t<div class="tile-content"><i>{{labels.multiselect_not_found}}"{{search}}" ...</i></div>\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t</ul>\n\t</div>\n\n'},function(t,e,n){var a,s;n(76),a=n(78),s=n(79),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(77);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n\t#rop_core .input-group .input-group-addon.btn.active[_v-1c9c2ce2] {\n\t\tbackground-color: #8bc34a;\n\t\tborder-color: #33691e;\n\t\tcolor: #FFF;\n\t}\n",""])},function(t,e,n){"use strict";t.exports={name:"button-checkbox",props:{value:{default:"0",type:String},label:{default:"",type:String},id:{default:function(){var t="day";return""!==this.label&&void 0!==this.label&&(t=t+"_"+this.label.toLowerCase()),t}},checked:{default:!1,type:Boolean}},data:function(){return{componentCheckState:this.checked}},computed:{is_active:function(){return{active:!0===this.componentCheckState}}},watch:{checked:function(){this.componentCheckState=this.checked}},methods:{toggleThis:function(){this.componentCheckState=!this.componentCheckState,this.componentCheckState?this.$emit("add-day",this.value):this.$emit("rmv-day",this.value)}}}},function(t,e){t.exports='\n\t<button class="btn input-group-addon column" :class="is_active" @click="toggleThis()" _v-1c9c2ce2="">{{label}}</button>\n'},function(t,e,n){var a,s;n(81),a=n(83),s=n(84),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(82);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n\t#rop-upsell-box[_v-4cbae0f4]{\n\t\tmargin-top:20px;\n\t}\n\t#rop_core .rop-upsell-business-card[_v-4cbae0f4],\n\t#rop_core .rop-upsell-pro-card[_v-4cbae0f4] {\n\t\tpadding: 0;\n\t}\n",""])},function(t,e,n){"use strict";t.exports={name:"upsell-sidebar",data:function(){return{license:this.$store.state.licence,upsell_link:ropApiSettings.upsell_link,to_pro_upsell:ROP_ASSETS_URL+"img/to_pro.png",labels:this.$store.state.labels.general,to_business_upsell:ROP_ASSETS_URL+"img/to_business.png"}}}},function(t,e){t.exports='\n\t<div id="rop-upsell-box" _v-4cbae0f4="">\n\t\t<div class="card rop-upsell-pro-card" v-if="license < 1 " _v-4cbae0f4="">\n\t\t\t<a :href="upsell_link" target="_blank" _v-4cbae0f4="">\n\t\t\t\t<img class="img-responsive" :src="to_pro_upsell" :alt="labels.upgrade_pro_cta" _v-4cbae0f4="">\n\t\t\t</a>\n\t\t</div>\n\t\t<div class="card rop-upsell-business-card" v-if="license === 1" _v-4cbae0f4="">\n\t\t\t<a :href="upsell_link" target="_blank" _v-4cbae0f4="">\n\t\t\t\t<img class="img-responsive" :src="to_business_upsell" :alt="labels.upgrade_biz_cta" _v-4cbae0f4="">\n\t\t\t</a>\n\t\t</div>\n\t</div>\n'},function(t,e,n){var a,s;n(223),a=n(225),s=n(226),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a,s;n(252),a=n(254),s=n(255),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(t){return/^nm$/i.test(t)},meridiem:function(t,e,n){return t<12?n?"vm":"VM":n?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},a=function(t){return 0===t?0:1===t?1:2===t?2:t%100>=3&&t%100<=10?3:t%100>=11?4:5},s={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},i=function(t){return function(e,n,i,r){var o=a(e),d=s[t][a(e)];return 2===o&&(d=d[n?0:1]),d.replace(/%d/i,e)}},r=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];return t.defineLocale("ar",{months:r,monthsShort:r,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(t){return"م"===t},meridiem:function(t,e,n){return t<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:i("s"),ss:i("s"),m:i("m"),mm:i("m"),h:i("h"),hh:i("h"),d:i("d"),dd:i("d"),M:i("M"),MM:i("M"),y:i("y"),yy:i("y")},preparse:function(t){return t.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(t){return n[t]}).replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]}).replace(/,/g,"،")},week:{dow:6,doy:12}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("ar-dz",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"أح_إث_ثلا_أر_خم_جم_سب".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},n=function(t){return 0===t?0:1===t?1:2===t?2:t%100>=3&&t%100<=10?3:t%100>=11?4:5},a={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},s=function(t){return function(e,s,i,r){var o=n(e),d=a[t][n(e)];return 2===o&&(d=d[s?0:1]),d.replace(/%d/i,e)}},i=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];return t.defineLocale("ar-ly",{months:i,monthsShort:i,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(t){return"م"===t},meridiem:function(t,e,n){return t<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:s("s"),ss:s("s"),m:s("m"),mm:s("m"),h:s("h"),hh:s("h"),d:s("d"),dd:s("d"),M:s("M"),MM:s("M"),y:s("y"),yy:s("y")},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]}).replace(/,/g,"،")},week:{dow:6,doy:12}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};return t.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(t){return"م"===t},meridiem:function(t,e,n){return t<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(t){return t.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(t){return n[t]}).replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]}).replace(/,/g,"،")},week:{dow:0,doy:6}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"};return t.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"birneçə saniyə",ss:"%d saniyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(t){return/^(gündüz|axşam)$/.test(t)},meridiem:function(t,e,n){return t<4?"gecə":t<12?"səhər":t<17?"gündüz":"axşam"},dayOfMonthOrdinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(t){if(0===t)return t+"-ıncı";var n=t%10,a=t%100-n,s=t>=100?100:null;return t+(e[n]||e[a]||e[s])},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e){var n=t.split("_");return e%10==1&&e%100!=11?n[0]:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?n[1]:n[2]}function n(t,n,a){var s={ss:n?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:n?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:n?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"};return"m"===a?n?"хвіліна":"хвіліну":"h"===a?n?"гадзіна":"гадзіну":t+" "+e(s[a],+t)}return t.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:n,mm:n,h:n,hh:n,d:"дзень",dd:n,M:"месяц",MM:n,y:"год",yy:n},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(t){return/^(дня|вечара)$/.test(t)},meridiem:function(t,e,n){return t<4?"ночы":t<12?"раніцы":t<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(t,e){switch(e){case"M":case"d":case"DDD":case"w":case"W":return t%10!=2&&t%10!=3||t%100==12||t%100==13?t+"-ы":t+"-і";case"D":return t+"-га";default:return t}},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(t){var e=t%10,n=t%100;return 0===t?t+"-ев":0===n?t+"-ен":n>10&&n<20?t+"-ти":1===e?t+"-ви":2===e?t+"-ри":7===e||8===e?t+"-ми":t+"-ти"},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des".split("_"),weekdays:"Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm"},calendar:{sameDay:"[Bi lɛrɛ] LT",nextDay:"[Sini lɛrɛ] LT",nextWeek:"dddd [don lɛrɛ] LT",lastDay:"[Kunu lɛrɛ] LT",lastWeek:"dddd [tɛmɛnen lɛrɛ] LT",sameElse:"L"},relativeTime:{future:"%s kɔnɔ",past:"a bɛ %s bɔ",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"lɛrɛ kelen",hh:"lɛrɛ %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},n={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};return t.defineLocale("bn",{months:"জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(t){return t.replace(/[১২৩৪৫৬৭৮৯০]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(t,e){return 12===t&&(t=0),"রাত"===e&&t>=4||"দুপুর"===e&&t<5||"বিকাল"===e?t+12:t},meridiem:function(t,e,n){return t<4?"রাত":t<10?"সকাল":t<17?"দুপুর":t<20?"বিকাল":"রাত"},week:{dow:0,doy:6}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},n={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"};return t.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",ss:"%d སྐར་ཆ།",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(t){return t.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,meridiemHour:function(t,e){return 12===t&&(t=0),"མཚན་མོ"===e&&t>=4||"ཉིན་གུང"===e&&t<5||"དགོང་དག"===e?t+12:t},meridiem:function(t,e,n){return t<4?"མཚན་མོ":t<10?"ཞོགས་ཀས":t<17?"ཉིན་གུང":t<20?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n){return t+" "+s({mm:"munutenn",MM:"miz",dd:"devezh"}[n],t)}function n(t){switch(a(t)){case 1:case 3:case 4:case 5:case 9:return t+" bloaz";default:return t+" vloaz"}}function a(t){return t>9?a(t%10):t}function s(t,e){return 2===e?i(t):t}function i(t){var e={m:"v",b:"v",d:"z"};return void 0===e[t.charAt(0)]?t:e[t.charAt(0)]+t.substring(1)}return t.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",ss:"%d eilenn",m:"ur vunutenn",mm:e,h:"un eur",hh:"%d eur",d:"un devezh",dd:e,M:"ur miz",MM:e,y:"ur bloaz",yy:n},dayOfMonthOrdinalParse:/\d{1,2}(añ|vet)/,ordinal:function(t){return t+(1===t?"añ":"vet")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n){var a=t+" ";switch(n){case"ss":return a+=1===t?"sekunda":2===t||3===t||4===t?"sekunde":"sekundi";case"m":return e?"jedna minuta":"jedne minute";case"mm":return a+=1===t?"minuta":2===t||3===t||4===t?"minute":"minuta";case"h":return e?"jedan sat":"jednog sata";case"hh":return a+=1===t?"sat":2===t||3===t||4===t?"sata":"sati";case"dd":return a+=1===t?"dan":"dana";case"MM":return a+=1===t?"mjesec":2===t||3===t||4===t?"mjeseca":"mjeseci";case"yy":return a+=1===t?"godina":2===t||3===t||4===t?"godine":"godina"}}return t.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:e,m:e,mm:e,h:e,hh:e,d:"dan",dd:e,M:"mjesec",MM:e,y:"godinu",yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(t,e){var n=1===t?"r":2===t?"n":3===t?"r":4===t?"t":"è";return"w"!==e&&"W"!==e||(n="a"),t+n},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t){return t>1&&t<5&&1!=~~(t/10)}function n(t,n,a,s){var i=t+" ";switch(a){case"s":return n||s?"pár sekund":"pár sekundami";case"ss":return n||s?i+(e(t)?"sekundy":"sekund"):i+"sekundami";case"m":return n?"minuta":s?"minutu":"minutou";case"mm":return n||s?i+(e(t)?"minuty":"minut"):i+"minutami";case"h":return n?"hodina":s?"hodinu":"hodinou";case"hh":return n||s?i+(e(t)?"hodiny":"hodin"):i+"hodinami";case"d":return n||s?"den":"dnem";case"dd":return n||s?i+(e(t)?"dny":"dní"):i+"dny";case"M":return n||s?"měsíc":"měsícem";case"MM":return n||s?i+(e(t)?"měsíce":"měsíců"):i+"měsíci";case"y":return n||s?"rok":"rokem";case"yy":return n||s?i+(e(t)?"roky":"let"):i+"lety"}}var a="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),s="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),i=[/^led/i,/^úno/i,/^bře/i,/^dub/i,/^kvě/i,/^(čvn|červen$|června)/i,/^(čvc|červenec|července)/i,/^srp/i,/^zář/i,/^říj/i,/^lis/i,/^pro/i],r=/^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;return t.defineLocale("cs",{months:a,monthsShort:s,monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,monthsParse:i,longMonthsParse:i,shortMonthsParse:i,weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(t){return t+(/сехет$/i.exec(t)?"рен":/ҫул$/i.exec(t)?"тан":"ран")},past:"%s каялла",s:"пӗр-ик ҫеккунт",ss:"%d ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},dayOfMonthOrdinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(t){var e=t,n="",a=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"];return e>20?n=40===e||50===e||60===e||80===e||100===e?"fed":"ain":e>0&&(n=a[e]),t+n},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"på dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n,a){var s={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[t+" Tage",t+" Tagen"],M:["ein Monat","einem Monat"],MM:[t+" Monate",t+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[t+" Jahre",t+" Jahren"]};return e?s[n][0]:s[n][1]}return t.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:e,mm:"%d Minuten",h:e,hh:"%d Stunden",d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n,a){var s={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[t+" Tage",t+" Tagen"],M:["ein Monat","einem Monat"],MM:[t+" Monate",t+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[t+" Jahre",t+" Jahren"]};return e?s[n][0]:s[n][1]}return t.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:e,mm:"%d Minuten",h:e,hh:"%d Stunden",d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n,a){var s={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[t+" Tage",t+" Tagen"],M:["ein Monat","einem Monat"],MM:[t+" Monate",t+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[t+" Jahre",t+" Jahren"]};return e?s[n][0]:s[n][1]}return t.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:e,mm:"%d Minuten",h:e,hh:"%d Stunden",d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e=["ޖެނުއަރީ","ފެބްރުއަރީ","މާރިޗު","އޭޕްރީލު","މޭ","ޖޫން","ޖުލައި","އޯގަސްޓު","ސެޕްޓެމްބަރު","އޮކްޓޯބަރު","ނޮވެމްބަރު","ޑިސެމްބަރު"],n=["އާދިއްތަ","ހޯމަ","އަންގާރަ","ބުދަ","ބުރާސްފަތި","ހުކުރު","ހޮނިހިރު"];return t.defineLocale("dv",{months:e,monthsShort:e,weekdays:n,weekdaysShort:n,weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/މކ|މފ/,isPM:function(t){return"މފ"===t},meridiem:function(t,e,n){return t<12?"މކ":"މފ"},calendar:{sameDay:"[މިއަދު] LT",nextDay:"[މާދަމާ] LT",nextWeek:"dddd LT",lastDay:"[އިއްޔެ] LT",lastWeek:"[ފާއިތުވި] dddd LT",sameElse:"L"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",ss:"d% ސިކުންތު",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:7,doy:12}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t){return t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)}return t.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(t,e){return t?"string"==typeof e&&/D/.test(e.substring(0,e.indexOf("MMMM")))?this._monthsGenitiveEl[t.month()]:this._monthsNominativeEl[t.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(t,e,n){return t>11?n?"μμ":"ΜΜ":n?"πμ":"ΠΜ"},isPM:function(t){return"μ"===(t+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(t,n){var a=this._calendarEl[t],s=n&&n.hours();return e(a)&&(a=a.apply(n)),a.replace("{}",s%12==1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",ss:"%d δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("en-SG",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_ĵaŭ_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-a de] MMMM, YYYY",LLL:"D[-a de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-a de] MMMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(t){return"p"===t.charAt(0).toLowerCase()},meridiem:function(t,e,n){return t>11?n?"p.t.m.":"P.T.M.":n?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"antaŭ %s",s:"sekundoj",ss:"%d sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),a=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],s=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;return t.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsRegex:s,monthsShortRegex:s,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),a=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],s=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;return t.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsRegex:s,monthsShortRegex:s,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),a=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],s=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;return t.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsRegex:s,monthsShortRegex:s,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n,a){var s={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[t+"sekundi",t+"sekundit"],m:["ühe minuti","üks minut"],mm:[t+" minuti",t+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[t+" tunni",t+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[t+" kuu",t+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[t+" aasta",t+" aastat"]};return e?s[n][2]?s[n][2]:s[n][1]:a?s[n][0]:s[n][1]}return t.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:"%d päeva",M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},n={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};return t.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysShort:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(t){return/بعد از ظهر/.test(t)},meridiem:function(t,e,n){return t<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",ss:"ثانیه d%",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(t){return t.replace(/[۰-۹]/g,function(t){return n[t]}).replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]}).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,a,s){var i="";switch(a){case"s":return s?"muutaman sekunnin":"muutama sekunti";case"ss":return s?"sekunnin":"sekuntia";case"m":return s?"minuutin":"minuutti";case"mm":i=s?"minuutin":"minuuttia";break;case"h":return s?"tunnin":"tunti";case"hh":i=s?"tunnin":"tuntia";break;case"d":return s?"päivän":"päivä";case"dd":i=s?"päivän":"päivää";break;case"M":return s?"kuukauden":"kuukausi";case"MM":i=s?"kuukauden":"kuukautta";break;case"y":return s?"vuoden":"vuosi";case"yy":i=s?"vuoden":"vuotta"}return i=n(t,s)+" "+i}function n(t,e){return t<10?e?s[t]:a[t]:t}var a="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),s=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",a[7],a[8],a[9]];return t.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaður",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(t,e){switch(e){case"D":return t+(1===t?"er":"");default:case"M":case"Q":case"DDD":case"d":return t+(1===t?"er":"e");case"w":case"W":return t+(1===t?"re":"e")}},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(t,e){switch(e){default:case"M":case"Q":case"D":case"DDD":case"d":return t+(1===t?"er":"e");case"w":case"W":return t+(1===t?"re":"e")}}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(t,e){switch(e){default:case"M":case"Q":case"D":case"DDD":case"d":return t+(1===t?"er":"e");case"w":case"W":return t+(1===t?"re":"e")}},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),n="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");return t.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e=["Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Méitheamh","Iúil","Lúnasa","Meán Fómhair","Deaireadh Fómhair","Samhain","Nollaig"],n=["Eaná","Feab","Márt","Aibr","Beal","Méit","Iúil","Lúna","Meán","Deai","Samh","Noll"],a=["Dé Domhnaigh","Dé Luain","Dé Máirt","Dé Céadaoin","Déardaoin","Dé hAoine","Dé Satharn"],s=["Dom","Lua","Mái","Céa","Déa","hAo","Sat"],i=["Do","Lu","Má","Ce","Dé","hA","Sa"];return t.defineLocale("ga",{months:e,monthsShort:n,monthsParseExact:!0,weekdays:a,weekdaysShort:s,weekdaysMin:i,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Amárach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inné aig] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s ó shin",s:"cúpla soicind",ss:"%d soicind",m:"nóiméad",mm:"%d nóiméad",h:"uair an chloig",hh:"%d uair an chloig",d:"lá",dd:"%d lá",M:"mí",MM:"%d mí",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(t){return t+(1===t?"d":t%10==2?"na":"mh")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e=["Am Faoilleach","An Gearran","Am Màrt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dàmhair","An t-Samhain","An Dùbhlachd"],n=["Faoi","Gear","Màrt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dàmh","Samh","Dùbh"],a=["Didòmhnaich","Diluain","Dimàirt","Diciadain","Diardaoin","Dihaoine","Disathairne"],s=["Did","Dil","Dim","Dic","Dia","Dih","Dis"],i=["Dò","Lu","Mà","Ci","Ar","Ha","Sa"];return t.defineLocale("gd",{months:e,monthsShort:n,monthsParseExact:!0,weekdays:a,weekdaysShort:s,weekdaysMin:i,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-màireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-dè aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(t){return t+(1===t?"d":t%10==2?"na":"mh")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(t){return 0===t.indexOf("un")?"n"+t:"en "+t},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n,a){var s={s:["thodde secondanim","thodde second"],ss:[t+" secondanim",t+" second"],m:["eka mintan","ek minute"],mm:[t+" mintanim",t+" mintam"],h:["eka voran","ek vor"],hh:[t+" voranim",t+" voram"],d:["eka disan","ek dis"],dd:[t+" disanim",t+" dis"],M:["eka mhoinean","ek mhoino"],MM:[t+" mhoineanim",t+" mhoine"],y:["eka vorsan","ek voros"],yy:[t+" vorsanim",t+" vorsam"]};return e?s[n][0]:s[n][1]}return t.defineLocale("gom-latn",{months:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Ieta to] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fatlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(t,e){switch(e){case"D":return t+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return t}},week:{dow:1,doy:4},meridiemParse:/rati|sokalli|donparam|sanje/,meridiemHour:function(t,e){return 12===t&&(t=0),"rati"===e?t<4?t:t+12:"sokalli"===e?t:"donparam"===e?t>12?t:t+12:"sanje"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"rati":t<12?"sokalli":t<16?"donparam":t<20?"sanje":"rati"}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"૧",2:"૨",3:"૩",4:"૪",5:"૫",6:"૬",7:"૭",8:"૮",9:"૯",0:"૦"},n={"૧":"1","૨":"2","૩":"3","૪":"4","૫":"5","૬":"6","૭":"7","૮":"8","૯":"9","૦":"0"};return t.defineLocale("gu",{months:"જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર".split("_"),monthsShort:"જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.".split("_"),monthsParseExact:!0,weekdays:"રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર".split("_"),weekdaysShort:"રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ".split("_"),weekdaysMin:"ર_સો_મં_બુ_ગુ_શુ_શ".split("_"),longDateFormat:{LT:"A h:mm વાગ્યે",LTS:"A h:mm:ss વાગ્યે",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm વાગ્યે",LLLL:"dddd, D MMMM YYYY, A h:mm વાગ્યે"},calendar:{sameDay:"[આજ] LT",nextDay:"[કાલે] LT",nextWeek:"dddd, LT",lastDay:"[ગઇકાલે] LT",lastWeek:"[પાછલા] dddd, LT",sameElse:"L"},relativeTime:{future:"%s મા",past:"%s પેહલા",s:"અમુક પળો",ss:"%d સેકંડ",m:"એક મિનિટ",mm:"%d મિનિટ",h:"એક કલાક",hh:"%d કલાક",d:"એક દિવસ",dd:"%d દિવસ",M:"એક મહિનો",MM:"%d મહિનો",y:"એક વર્ષ",yy:"%d વર્ષ"},preparse:function(t){return t.replace(/[૧૨૩૪૫૬૭૮૯૦]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/રાત|બપોર|સવાર|સાંજ/,meridiemHour:function(t,e){return 12===t&&(t=0),"રાત"===e?t<4?t:t+12:"સવાર"===e?t:"બપોર"===e?t>=10?t:t+12:"સાંજ"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"રાત":t<10?"સવાર":t<17?"બપોર":t<20?"સાંજ":"રાત"},week:{dow:0,doy:6}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(t){return 2===t?"שעתיים":t+" שעות"},d:"יום",dd:function(t){return 2===t?"יומיים":t+" ימים"},M:"חודש",MM:function(t){return 2===t?"חודשיים":t+" חודשים"},y:"שנה",yy:function(t){return 2===t?"שנתיים":t%10==0&&10!==t?t+" שנה":t+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(t){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(t)},meridiem:function(t,e,n){return t<5?"לפנות בוקר":t<10?"בבוקר":t<12?n?'לפנה"צ':"לפני הצהריים":t<18?n?'אחה"צ':"אחרי הצהריים":"בערב"}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};return t.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(t){return t.replace(/[१२३४५६७८९०]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(t,e){return 12===t&&(t=0),"रात"===e?t<4?t:t+12:"सुबह"===e?t:"दोपहर"===e?t>=10?t:t+12:"शाम"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"रात":t<10?"सुबह":t<17?"दोपहर":t<20?"शाम":"रात"},week:{dow:0,doy:6}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n){var a=t+" ";switch(n){case"ss":return a+=1===t?"sekunda":2===t||3===t||4===t?"sekunde":"sekundi";case"m":return e?"jedna minuta":"jedne minute";case"mm":return a+=1===t?"minuta":2===t||3===t||4===t?"minute":"minuta";case"h":return e?"jedan sat":"jednog sata";case"hh":return a+=1===t?"sat":2===t||3===t||4===t?"sata":"sati";case"dd":return a+=1===t?"dan":"dana";case"MM":return a+=1===t?"mjesec":2===t||3===t||4===t?"mjeseca":"mjeseci";case"yy":return a+=1===t?"godina":2===t||3===t||4===t?"godine":"godina"}}return t.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:e,m:e,mm:e,h:e,hh:e,d:"dan",dd:e,M:"mjesec",MM:e,y:"godinu",yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n,a){var s=t;switch(n){case"s":return a||e?"néhány másodperc":"néhány másodperce";case"ss":return s+(a||e)?" másodperc":" másodperce";case"m":return"egy"+(a||e?" perc":" perce");case"mm":return s+(a||e?" perc":" perce");case"h":return"egy"+(a||e?" óra":" órája");case"hh":return s+(a||e?" óra":" órája");case"d":return"egy"+(a||e?" nap":" napja");case"dd":return s+(a||e?" nap":" napja");case"M":return"egy"+(a||e?" hónap":" hónapja");case"MM":return s+(a||e?" hónap":" hónapja");case"y":return"egy"+(a||e?" év":" éve");case"yy":return s+(a||e?" év":" éve")}return""}function n(t){return(t?"":"[múlt] ")+"["+a[this.day()]+"] LT[-kor]"}var a="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");return t.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(t){return"u"===t.charAt(1).toLowerCase()},meridiem:function(t,e,n){return t<12?!0===n?"de":"DE":!0===n?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return n.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return n.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("hy-am",{months:{format:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),standalone:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_")},monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",ss:"%d վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(t){return/^(ցերեկվա|երեկոյան)$/.test(t)},meridiem:function(t){return t<4?"գիշերվա":t<12?"առավոտվա":t<17?"ցերեկվա":"երեկոյան"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(t,e){switch(e){case"DDD":case"w":case"W":case"DDDo":return 1===t?t+"-ին":t+"-րդ";default:return t}},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(t,e){return 12===t&&(t=0),"pagi"===e?t:"siang"===e?t>=11?t:t+12:"sore"===e||"malam"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"pagi":t<15?"siang":t<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t){return t%100==11||t%10!=1}function n(t,n,a,s){var i=t+" ";switch(a){case"s":return n||s?"nokkrar sekúndur":"nokkrum sekúndum";case"ss":return e(t)?i+(n||s?"sekúndur":"sekúndum"):i+"sekúnda";case"m":return n?"mínúta":"mínútu";case"mm":return e(t)?i+(n||s?"mínútur":"mínútum"):n?i+"mínúta":i+"mínútu";case"hh":return e(t)?i+(n||s?"klukkustundir":"klukkustundum"):i+"klukkustund";case"d":return n?"dagur":s?"dag":"degi";case"dd":return e(t)?n?i+"dagar":i+(s?"daga":"dögum"):n?i+"dagur":i+(s?"dag":"degi");case"M":return n?"mánuður":s?"mánuð":"mánuði";case"MM":return e(t)?n?i+"mánuðir":i+(s?"mánuði":"mánuðum"):n?i+"mánuður":i+(s?"mánuð":"mánuði");case"y":return n||s?"ár":"ári";case"yy":return e(t)?i+(n||s?"ár":"árum"):i+(n||s?"ár":"ári")}}return t.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:n,ss:n,m:n,mm:n,h:"klukkustund",hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(t){return(/^[0-9].+$/.test(t)?"tra":"in")+" "+t},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(t){return(/^[0-9].+$/.test(t)?"tra":"in")+" "+t},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("ja",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(t){return"午後"===t},meridiem:function(t,e,n){return t<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:function(t){return t.week()<this.week()?"[来週]dddd LT":"dddd LT"},lastDay:"[昨日] LT",lastWeek:function(t){return this.week()<t.week()?"[先週]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";default:return t}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",ss:"%d秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(t,e){return 12===t&&(t=0),"enjing"===e?t:"siyang"===e?t>=11?t:t+12:"sonten"===e||"ndalu"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"enjing":t<15?"siyang":t<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("ka",{months:{standalone:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),format:"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს".split("_")},monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(t){return/(წამი|წუთი|საათი|წელი)/.test(t)?t.replace(/ი$/,"ში"):t+"ში"},past:function(t){return/(წამი|წუთი|საათი|დღე|თვე)/.test(t)?t.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(t)?t.replace(/წელი$/,"წლის წინ"):void 0},s:"რამდენიმე წამი",ss:"%d წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(t){return 0===t?t:1===t?t+"-ლი":t<20||t<=100&&t%20==0||t%100==0?"მე-"+t:t+"-ე"},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};return t.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(t){var n=t%10,a=t>=100?100:null;return t+(e[t]||e[n]||e[a])},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"១",2:"២",3:"៣",4:"៤",5:"៥",6:"៦",7:"៧",8:"៨",9:"៩",0:"០"},n={"១":"1","២":"2","៣":"3","៤":"4","៥":"5","៦":"6","៧":"7","៨":"8","៩":"9","០":"0"};return t.defineLocale("km",{months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysMin:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ព្រឹក|ល្ងាច/,isPM:function(t){return"ល្ងាច"===t},meridiem:function(t,e,n){return t<12?"ព្រឹក":"ល្ងាច"},calendar:{sameDay:"[ថ្ងៃនេះ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",ss:"%d វិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},dayOfMonthOrdinalParse:/ទី\d{1,2}/,ordinal:"ទី%d",preparse:function(t){return t.replace(/[១២៣៤៥៦៧៨៩០]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"೧",2:"೨",3:"೩",4:"೪",5:"೫",6:"೬",7:"೭",8:"೮",9:"೯",0:"೦"},n={"೧":"1","೨":"2","೩":"3","೪":"4","೫":"5","೬":"6","೭":"7","೮":"8","೯":"9","೦":"0"};return t.defineLocale("kn",{months:"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್".split("_"),monthsShort:"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ".split("_"),monthsParseExact:!0,weekdays:"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ".split("_"),weekdaysShort:"ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ".split("_"),weekdaysMin:"ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[ಇಂದು] LT",nextDay:"[ನಾಳೆ] LT",nextWeek:"dddd, LT",lastDay:"[ನಿನ್ನೆ] LT",lastWeek:"[ಕೊನೆಯ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವು ಕ್ಷಣಗಳು",ss:"%d ಸೆಕೆಂಡುಗಳು",m:"ಒಂದು ನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದು ಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದು ದಿನ",dd:"%d ದಿನ",M:"ಒಂದು ತಿಂಗಳು",MM:"%d ತಿಂಗಳು",y:"ಒಂದು ವರ್ಷ",yy:"%d ವರ್ಷ"},preparse:function(t){return t.replace(/[೧೨೩೪೫೬೭೮೯೦]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,meridiemHour:function(t,e){return 12===t&&(t=0),"ರಾತ್ರಿ"===e?t<4?t:t+12:"ಬೆಳಿಗ್ಗೆ"===e?t:"ಮಧ್ಯಾಹ್ನ"===e?t>=10?t:t+12:"ಸಂಜೆ"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"ರಾತ್ರಿ":t<10?"ಬೆಳಿಗ್ಗೆ":t<17?"ಮಧ್ಯಾಹ್ನ":t<20?"ಸಂಜೆ":"ರಾತ್ರಿ"},dayOfMonthOrdinalParse:/\d{1,2}(ನೇ)/,ordinal:function(t){return t+"ನೇ"},week:{dow:0,doy:6}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"일";case"M":return t+"월";case"w":case"W":return t+"주";default:return t}},meridiemParse:/오전|오후/,isPM:function(t){return"오후"===t},meridiem:function(t,e,n){return t<12?"오전":"오후"}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},a=["کانونی دووەم","شوبات","ئازار","نیسان","ئایار","حوزەیران","تەمموز","ئاب","ئەیلوول","تشرینی یەكەم","تشرینی دووەم","كانونی یەکەم"];return t.defineLocale("ku",{months:a,monthsShort:a,weekdays:"یهكشهممه_دووشهممه_سێشهممه_چوارشهممه_پێنجشهممه_ههینی_شهممه".split("_"),weekdaysShort:"یهكشهم_دووشهم_سێشهم_چوارشهم_پێنجشهم_ههینی_شهممه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ه_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ئێواره|بهیانی/,isPM:function(t){return/ئێواره/.test(t)},meridiem:function(t,e,n){return t<12?"بهیانی":"ئێواره"},calendar:{sameDay:"[ئهمرۆ كاتژمێر] LT",nextDay:"[بهیانی كاتژمێر] LT",nextWeek:"dddd [كاتژمێر] LT",lastDay:"[دوێنێ كاتژمێر] LT",lastWeek:"dddd [كاتژمێر] LT",sameElse:"L"},relativeTime:{future:"له %s",past:"%s",s:"چهند چركهیهك",ss:"چركه %d",m:"یهك خولهك",mm:"%d خولهك",h:"یهك كاتژمێر",hh:"%d كاتژمێر",d:"یهك ڕۆژ",dd:"%d ڕۆژ",M:"یهك مانگ",MM:"%d مانگ",y:"یهك ساڵ",yy:"%d ساڵ"},preparse:function(t){return t.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(t){return n[t]}).replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]}).replace(/,/g,"،")},week:{dow:6,doy:12}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={0:"-чү",1:"-чи",2:"-чи",3:"-чү",4:"-чү",5:"-чи",6:"-чы",7:"-чи",8:"-чи",9:"-чу",10:"-чу",20:"-чы",30:"-чу",40:"-чы",50:"-чү",60:"-чы",70:"-чи",80:"-чи",90:"-чу",100:"-чү"};return t.defineLocale("ky",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгүн саат] LT",nextDay:"[Эртең саат] LT",nextWeek:"dddd [саат] LT",lastDay:"[Кечээ саат] LT",lastWeek:"[Өткөн аптанын] dddd [күнү] [саат] LT",sameElse:"L"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече секунд",ss:"%d секунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир саат",hh:"%d саат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(чи|чы|чү|чу)/,ordinal:function(t){var n=t%10,a=t>=100?100:null;return t+(e[t]||e[n]||e[a])},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n,a){var s={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return e?s[n][0]:s[n][1]}function n(t){return s(t.substr(0,t.indexOf(" ")))?"a "+t:"an "+t}function a(t){return s(t.substr(0,t.indexOf(" ")))?"viru "+t:"virun "+t}function s(t){if(t=parseInt(t,10),isNaN(t))return!1;if(t<0)return!0;if(t<10)return 4<=t&&t<=7;if(t<100){var e=t%10,n=t/10;return s(0===e?n:e)}if(t<1e4){for(;t>=10;)t/=10;return s(t)}return t/=1e3,s(t)}return t.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:n,past:a,s:"e puer Sekonnen",ss:"%d Sekonnen",m:e,mm:"%d Minutten",h:e,hh:"%d Stonnen",d:e,dd:"%d Deeg",M:e,MM:"%d Méint",y:e,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("lo",{months:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),monthsShort:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdays:"ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysMin:"ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},meridiemParse:/ຕອນເຊົ້າ|ຕອນແລງ/,isPM:function(t){return"ຕອນແລງ"===t},meridiem:function(t,e,n){return t<12?"ຕອນເຊົ້າ":"ຕອນແລງ"},calendar:{sameDay:"[ມື້ນີ້ເວລາ] LT",nextDay:"[ມື້ອື່ນເວລາ] LT",nextWeek:"[ວັນ]dddd[ໜ້າເວລາ] LT",lastDay:"[ມື້ວານນີ້ເວລາ] LT",lastWeek:"[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT",sameElse:"L"},relativeTime:{future:"ອີກ %s",past:"%sຜ່ານມາ",s:"ບໍ່ເທົ່າໃດວິນາທີ",ss:"%d ວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືອນ",MM:"%d ເດືອນ",y:"1 ປີ",yy:"%d ປີ"},dayOfMonthOrdinalParse:/(ທີ່)\d{1,2}/,ordinal:function(t){return"ທີ່"+t}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n,a){return e?"kelios sekundės":a?"kelių sekundžių":"kelias sekundes"}function n(t,e,n,a){return e?s(n)[0]:a?s(n)[1]:s(n)[2]}function a(t){return t%10==0||t>10&&t<20}function s(t){return r[t].split("_")}function i(t,e,i,r){var o=t+" ";return 1===t?o+n(t,e,i[0],r):e?o+(a(t)?s(i)[1]:s(i)[0]):r?o+s(i)[1]:o+(a(t)?s(i)[1]:s(i)[2])}var r={ss:"sekundė_sekundžių_sekundes",m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};return t.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:e,ss:i,m:n,mm:i,h:n,hh:i,d:n,dd:i,M:n,MM:i,y:n,yy:i},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(t){return t+"-oji"},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n){return n?e%10==1&&e%100!=11?t[2]:t[3]:e%10==1&&e%100!=11?t[0]:t[1]}function n(t,n,a){return t+" "+e(i[a],t,n)}function a(t,n,a){return e(i[a],t,n)}function s(t,e){return e?"dažas sekundes":"dažām sekundēm"}var i={ss:"sekundes_sekundēm_sekunde_sekundes".split("_"),m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};return t.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:s,ss:n,m:a,mm:n,h:a,hh:n,d:a,dd:n,M:a,MM:n,y:a,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(t,e){return 1===t?e[0]:t>=2&&t<=4?e[1]:e[2]},translate:function(t,n,a){var s=e.words[a];return 1===a.length?n?s[0]:s[1]:t+" "+e.correctGrammaticalCase(t,s)}};return t.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:e.translate,m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"dan",dd:e.translate,M:"mjesec",MM:e.translate,y:"godinu",yy:e.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",ss:"%d hēkona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(t){var e=t%10,n=t%100;return 0===t?t+"-ев":0===n?t+"-ен":n>10&&n<20?t+"-ти":1===e?t+"-ви":2===e?t+"-ри":7===e||8===e?t+"-ми":t+"-ти"},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),monthsParseExact:!0,weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",ss:"%d സെക്കൻഡ്",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,meridiemHour:function(t,e){return 12===t&&(t=0),"രാത്രി"===e&&t>=4||"ഉച്ച കഴിഞ്ഞ്"===e||"വൈകുന്നേരം"===e?t+12:t},meridiem:function(t,e,n){return t<4?"രാത്രി":t<12?"രാവിലെ":t<17?"ഉച്ച കഴിഞ്ഞ്":t<20?"വൈകുന്നേരം":"രാത്രി"}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n,a){switch(n){case"s":return e?"хэдхэн секунд":"хэдхэн секундын";case"ss":return t+(e?" секунд":" секундын");case"m":case"mm":return t+(e?" минут":" минутын");case"h":case"hh":return t+(e?" цаг":" цагийн");case"d":case"dd":return t+(e?" өдөр":" өдрийн");case"M":case"MM":return t+(e?" сар":" сарын");case"y":case"yy":return t+(e?" жил":" жилийн");default:return t}}return t.defineLocale("mn",{months:"Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар".split("_"),monthsShort:"1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар".split("_"),monthsParseExact:!0,weekdays:"Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба".split("_"),weekdaysShort:"Ням_Дав_Мяг_Лха_Пүр_Баа_Бям".split("_"),weekdaysMin:"Ня_Да_Мя_Лх_Пү_Ба_Бя".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY оны MMMMын D",LLL:"YYYY оны MMMMын D HH:mm",LLLL:"dddd, YYYY оны MMMMын D HH:mm"},meridiemParse:/ҮӨ|ҮХ/i,isPM:function(t){return"ҮХ"===t},meridiem:function(t,e,n){return t<12?"ҮӨ":"ҮХ"},calendar:{sameDay:"[Өнөөдөр] LT",nextDay:"[Маргааш] LT",nextWeek:"[Ирэх] dddd LT",lastDay:"[Өчигдөр] LT",lastWeek:"[Өнгөрсөн] dddd LT",sameElse:"L"},relativeTime:{future:"%s дараа",past:"%s өмнө",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2} өдөр/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+" өдөр";default:return t}}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n,a){var s="";if(e)switch(n){case"s":s="काही सेकंद";break;case"ss":s="%d सेकंद";break;case"m":s="एक मिनिट";break;case"mm":s="%d मिनिटे";break;case"h":s="एक तास";break;case"hh":s="%d तास";break;case"d":s="एक दिवस";break;case"dd":s="%d दिवस";break;case"M":s="एक महिना";break;case"MM":s="%d महिने";break;case"y":s="एक वर्ष";break;case"yy":s="%d वर्षे"}else switch(n){case"s":s="काही सेकंदां";break;case"ss":s="%d सेकंदां";break;case"m":s="एका मिनिटा";break;case"mm":s="%d मिनिटां";break;case"h":s="एका तासा";break;case"hh":s="%d तासां";break;case"d":s="एका दिवसा";break;case"dd":s="%d दिवसां";break;case"M":s="एका महिन्या";break;case"MM":s="%d महिन्यां";break;case"y":s="एका वर्षा";break;case"yy":s="%d वर्षां"}return s.replace(/%d/i,t)}var n={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},a={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};return t.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%sमध्ये",past:"%sपूर्वी",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},preparse:function(t){return t.replace(/[१२३४५६७८९०]/g,function(t){return a[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return n[t]})},meridiemParse:/रात्री|सकाळी|दुपारी|सायंकाळी/,meridiemHour:function(t,e){return 12===t&&(t=0),"रात्री"===e?t<4?t:t+12:"सकाळी"===e?t:"दुपारी"===e?t>=10?t:t+12:"सायंकाळी"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"रात्री":t<10?"सकाळी":t<17?"दुपारी":t<20?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(t,e){return 12===t&&(t=0),"pagi"===e?t:"tengahari"===e?t>=11?t:t+12:"petang"===e||"malam"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"pagi":t<15?"tengahari":t<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(t,e){return 12===t&&(t=0),"pagi"===e?t:"tengahari"===e?t>=11?t:t+12:"petang"===e||"malam"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"pagi":t<15?"tengahari":t<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ".split("_"),weekdays:"Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt".split("_"),weekdaysShort:"Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib".split("_"),weekdaysMin:"Ħa_Tn_Tl_Er_Ħa_Ġi_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[Għada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-bieraħ fil-]LT",lastWeek:"dddd [li għadda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f’ %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"siegħa",hh:"%d siegħat",d:"ġurnata",dd:"%d ġranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"},n={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"};return t.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",ss:"%d စက္ကန့်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(t){return t.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};return t.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(t){return t.replace(/[१२३४५६७८९०]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(t,e){return 12===t&&(t=0),"राति"===e?t<4?t:t+12:"बिहान"===e?t:"दिउँसो"===e?t>=10?t:t+12:"साँझ"===e?t+12:void 0},meridiem:function(t,e,n){return t<3?"राति":t<12?"बिहान":t<16?"दिउँसो":t<20?"साँझ":"राति"},calendar:{sameDay:"[आज] LT",nextDay:"[भोलि] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडि",s:"केही क्षण",ss:"%d सेकेण्ड",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:0,doy:6}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),a=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],s=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;return t.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsRegex:s,monthsShortRegex:s,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),a=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],s=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;return t.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsRegex:s,monthsShortRegex:s,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"੧",2:"੨",3:"੩",4:"੪",5:"੫",6:"੬",7:"੭",8:"੮",9:"੯",0:"੦"},n={"੧":"1","੨":"2","੩":"3","੪":"4","੫":"5","੬":"6","੭":"7","੮":"8","੯":"9","੦":"0"};return t.defineLocale("pa-in",{months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdays:"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"),weekdaysShort:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),weekdaysMin:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),longDateFormat:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},calendar:{sameDay:"[ਅਜ] LT",nextDay:"[ਕਲ] LT",nextWeek:"[ਅਗਲਾ] dddd, LT",lastDay:"[ਕਲ] LT",lastWeek:"[ਪਿਛਲੇ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕੁਝ ਸਕਿੰਟ",ss:"%d ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"},preparse:function(t){return t.replace(/[੧੨੩੪੫੬੭੮੯੦]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,meridiemHour:function(t,e){return 12===t&&(t=0),"ਰਾਤ"===e?t<4?t:t+12:"ਸਵੇਰ"===e?t:"ਦੁਪਹਿਰ"===e?t>=10?t:t+12:"ਸ਼ਾਮ"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"ਰਾਤ":t<10?"ਸਵੇਰ":t<17?"ਦੁਪਹਿਰ":t<20?"ਸ਼ਾਮ":"ਰਾਤ"},week:{dow:0,doy:6}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t){return t%10<5&&t%10>1&&~~(t/10)%10!=1}function n(t,n,a){var s=t+" ";switch(a){case"ss":return s+(e(t)?"sekundy":"sekund");case"m":return n?"minuta":"minutę";case"mm":return s+(e(t)?"minuty":"minut");case"h":return n?"godzina":"godzinę";case"hh":return s+(e(t)?"godziny":"godzin");case"MM":return s+(e(t)?"miesiące":"miesięcy");case"yy":return s+(e(t)?"lata":"lat")}}var a="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),s="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");return t.defineLocale("pl",{months:function(t,e){return t?""===e?"("+s[t.month()]+"|"+a[t.month()]+")":/D MMMM/.test(e)?s[t.month()]:a[t.month()]:a},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:n,m:n,mm:n,h:n,hh:n,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:n,y:"rok",yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº"})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n){var a={ss:"secunde",mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"},s=" ";return(t%100>=20||t>=100&&t%100==0)&&(s=" de "),t+s+a[n]}return t.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",ss:e,m:"un minut",mm:e,h:"o oră",hh:e,d:"o zi",dd:e,M:"o lună",MM:e,y:"un an",yy:e},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e){var n=t.split("_");return e%10==1&&e%100!=11?n[0]:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?n[1]:n[2]}function n(t,n,a){var s={ss:n?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:n?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===a?n?"минута":"минуту":t+" "+e(s[a],+t)}var a=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];return t.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:a,longMonthsParse:a,shortMonthsParse:a,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(t){if(t.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(t){if(t.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:n,m:n,mm:n,h:"час",hh:n,d:"день",dd:n,M:"месяц",MM:n,y:"год",yy:n},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(t){return/^(дня|вечера)$/.test(t)},meridiem:function(t,e,n){return t<4?"ночи":t<12?"утра":t<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(t,e){switch(e){case"M":case"d":case"DDD":return t+"-й";case"D":return t+"-го";case"w":case"W":return t+"-я";default:return t}},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],n=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"];return t.defineLocale("sd",{months:e,monthsShort:e,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(t){return"شام"===t},meridiem:function(t,e,n){return t<12?"صبح":"شام"},calendar:{sameDay:"[اڄ] LT",nextDay:"[سڀاڻي] LT",nextWeek:"dddd [اڳين هفتي تي] LT",lastDay:"[ڪالهه] LT",lastWeek:"[گزريل هفتي] dddd [تي] LT",sameElse:"L"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",ss:"%d سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("se",{months:"ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),monthsShort:"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov".split("_"),weekdays:"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),weekdaysShort:"sotn_vuos_maŋ_gask_duor_bear_láv".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s geažes",past:"maŋit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්රහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්ර_සි_සෙ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",ss:"තත්පර %d",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},dayOfMonthOrdinalParse:/\d{1,2} වැනි/,ordinal:function(t){return t+" වැනි"},meridiemParse:/පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,isPM:function(t){return"ප.ව."===t||"පස් වරු"===t},meridiem:function(t,e,n){return t>11?n?"ප.ව.":"පස් වරු":n?"පෙ.ව.":"පෙර වරු"}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t){return t>1&&t<5}function n(t,n,a,s){var i=t+" ";switch(a){case"s":return n||s?"pár sekúnd":"pár sekundami";case"ss":return n||s?i+(e(t)?"sekundy":"sekúnd"):i+"sekundami";case"m":return n?"minúta":s?"minútu":"minútou";case"mm":return n||s?i+(e(t)?"minúty":"minút"):i+"minútami";case"h":return n?"hodina":s?"hodinu":"hodinou";case"hh":return n||s?i+(e(t)?"hodiny":"hodín"):i+"hodinami";case"d":return n||s?"deň":"dňom";case"dd":return n||s?i+(e(t)?"dni":"dní"):i+"dňami";case"M":return n||s?"mesiac":"mesiacom";case"MM":return n||s?i+(e(t)?"mesiace":"mesiacov"):i+"mesiacmi";case"y":return n||s?"rok":"rokom";case"yy":return n||s?i+(e(t)?"roky":"rokov"):i+"rokmi"}}var a="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),s="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");return t.defineLocale("sk",{months:a,monthsShort:s,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n,a){var s=t+" ";switch(n){case"s":return e||a?"nekaj sekund":"nekaj sekundami";case"ss":return s+=1===t?e?"sekundo":"sekundi":2===t?e||a?"sekundi":"sekundah":t<5?e||a?"sekunde":"sekundah":"sekund";case"m":return e?"ena minuta":"eno minuto";case"mm":return s+=1===t?e?"minuta":"minuto":2===t?e||a?"minuti":"minutama":t<5?e||a?"minute":"minutami":e||a?"minut":"minutami";case"h":return e?"ena ura":"eno uro";case"hh":return s+=1===t?e?"ura":"uro":2===t?e||a?"uri":"urama":t<5?e||a?"ure":"urami":e||a?"ur":"urami";case"d":return e||a?"en dan":"enim dnem";case"dd":return s+=1===t?e||a?"dan":"dnem":2===t?e||a?"dni":"dnevoma":e||a?"dni":"dnevi";case"M":return e||a?"en mesec":"enim mesecem";case"MM":return s+=1===t?e||a?"mesec":"mesecem":2===t?e||a?"meseca":"mesecema":t<5?e||a?"mesece":"meseci":e||a?"mesecev":"meseci";case"y":return e||a?"eno leto":"enim letom";case"yy":return s+=1===t?e||a?"leto":"letom":2===t?e||a?"leti":"letoma":t<5?e||a?"leta":"leti":e||a?"let":"leti"}}return t.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(t){return"M"===t.charAt(0)},meridiem:function(t,e,n){return t<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(t,e){return 1===t?e[0]:t>=2&&t<=4?e[1]:e[2]},translate:function(t,n,a){var s=e.words[a];return 1===a.length?n?s[0]:s[1]:t+" "+e.correctGrammaticalCase(t,s)}};return t.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:e.translate,m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"dan",dd:e.translate,M:"mesec",MM:e.translate,y:"godinu",yy:e.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(t,e){return 1===t?e[0]:t>=2&&t<=4?e[1]:e[2]},translate:function(t,n,a){var s=e.words[a];return 1===a.length?n?s[0]:s[1]:t+" "+e.correctGrammaticalCase(t,s)}};return t.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:e.translate,m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"дан",dd:e.translate,M:"месец",MM:e.translate,y:"годину",yy:e.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(t,e,n){return t<11?"ekuseni":t<15?"emini":t<19?"entsambama":"ebusuku"},meridiemHour:function(t,e){return 12===t&&(t=0),"ekuseni"===e?t:"emini"===e?t>=11?t:t+12:"entsambama"===e||"ebusuku"===e?0===t?0:t+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}(e|a)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"e":1===e?"a":2===e?"a":"e")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"masiku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"௭",8:"௮",9:"௯",0:"௦"},n={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","௭":"7","௮":"8","௯":"9","௦":"0"};return t.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",ss:"%d விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},dayOfMonthOrdinalParse:/\d{1,2}வது/,ordinal:function(t){return t+"வது"},preparse:function(t){return t.replace(/[௧௨௩௪௫௬௭௮௯௦]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(t,e,n){return t<2?" யாமம்":t<6?" வைகறை":t<10?" காலை":t<14?" நண்பகல்":t<18?" எற்பாடு":t<22?" மாலை":" யாமம்"},meridiemHour:function(t,e){return 12===t&&(t=0),"யாமம்"===e?t<2?t:t+12:"வைகறை"===e||"காலை"===e?t:"நண்பகல்"===e&&t>=10?t:t+12},week:{dow:0,doy:6}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("te",{months:"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"),monthsShort:"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"),monthsParseExact:!0,weekdays:"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"),weekdaysMin:"ఆ_సో_మం_బు_గు_శు_శ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[నేడు] LT",nextDay:"[రేపు] LT",nextWeek:"dddd, LT",lastDay:"[నిన్న] LT",lastWeek:"[గత] dddd, LT",sameElse:"L"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",ss:"%d సెకన్లు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"},dayOfMonthOrdinalParse:/\d{1,2}వ/,ordinal:"%dవ",meridiemParse:/రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,meridiemHour:function(t,e){return 12===t&&(t=0),"రాత్రి"===e?t<4?t:t+12:"ఉదయం"===e?t:"మధ్యాహ్నం"===e?t>=10?t:t+12:"సాయంత్రం"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"రాత్రి":t<10?"ఉదయం":t<17?"మధ్యాహ్నం":t<20?"సాయంత్రం":"రాత్రి"},week:{dow:0,doy:6}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"minutu balun",ss:"minutu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={0:"-ум",1:"-ум",2:"-юм",3:"-юм",4:"-ум",5:"-ум",6:"-ум",7:"-ум",8:"-ум",9:"-ум",10:"-ум",12:"-ум",13:"-ум",20:"-ум",30:"-юм",40:"-ум",50:"-ум",60:"-ум",70:"-ум",80:"-ум",90:"-ум",100:"-ум"};return t.defineLocale("tg",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),weekdaysShort:"яшб_дшб_сшб_чшб_пшб_ҷум_шнб".split("_"),weekdaysMin:"яш_дш_сш_чш_пш_ҷм_шб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Имрӯз соати] LT",nextDay:"[Пагоҳ соати] LT",lastDay:"[Дирӯз соати] LT",nextWeek:"dddd[и] [ҳафтаи оянда соати] LT",lastWeek:"dddd[и] [ҳафтаи гузашта соати] LT",sameElse:"L"},relativeTime:{future:"баъди %s",past:"%s пеш",s:"якчанд сония",m:"як дақиқа",mm:"%d дақиқа",h:"як соат",hh:"%d соат",d:"як рӯз",dd:"%d рӯз",M:"як моҳ",MM:"%d моҳ",y:"як сол",yy:"%d сол"},meridiemParse:/шаб|субҳ|рӯз|бегоҳ/,meridiemHour:function(t,e){return 12===t&&(t=0),"шаб"===e?t<4?t:t+12:"субҳ"===e?t:"рӯз"===e?t>=11?t:t+12:"бегоҳ"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"шаб":t<11?"субҳ":t<16?"рӯз":t<19?"бегоҳ":"шаб"},dayOfMonthOrdinalParse:/\d{1,2}-(ум|юм)/,ordinal:function(t){var n=t%10,a=t>=100?100:null;return t+(e[t]||e[n]||e[a])},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(t){return"หลังเที่ยง"===t},meridiem:function(t,e,n){return t<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(t){return t},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t){var e=t;return e=-1!==t.indexOf("jaj")?e.slice(0,-3)+"leS":-1!==t.indexOf("jar")?e.slice(0,-3)+"waQ":-1!==t.indexOf("DIS")?e.slice(0,-3)+"nem":e+" pIq"}function n(t){var e=t;return e=-1!==t.indexOf("jaj")?e.slice(0,-3)+"Hu’":-1!==t.indexOf("jar")?e.slice(0,-3)+"wen":-1!==t.indexOf("DIS")?e.slice(0,-3)+"ben":e+" ret"}function a(t,e,n,a){var i=s(t);switch(n){case"ss":return i+" lup";case"mm":return i+" tup";case"hh":return i+" rep";case"dd":return i+" jaj";case"MM":return i+" jar";case"yy":return i+" DIS"}}function s(t){var e=Math.floor(t%1e3/100),n=Math.floor(t%100/10),a=t%10,s="";return e>0&&(s+=i[e]+"vatlh"),n>0&&(s+=(""!==s?" ":"")+i[n]+"maH"),a>0&&(s+=(""!==s?" ":"")+i[a]),""===s?"pagh":s}var i="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");return t.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:e,past:n,s:"puS lup",ss:a,m:"wa’ tup",mm:a,h:"wa’ rep",hh:a,d:"wa’ jaj",dd:a,M:"wa’ jar",MM:a,y:"wa’ DIS",yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};return t.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(t,n){switch(n){case"d":case"D":case"Do":case"DD":return t;default:if(0===t)return t+"'ıncı";var a=t%10,s=t%100-a,i=t>=100?100:null;return t+(e[a]||e[s]||e[i])}},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e,n,a){var s={s:["viensas secunds","'iensas secunds"],ss:[t+" secunds",t+" secunds"],m:["'n míut","'iens míut"],mm:[t+" míuts",t+" míuts"],h:["'n þora","'iensa þora"],hh:[t+" þoras",t+" þoras"],d:["'n ziua","'iensa ziua"],dd:[t+" ziuas",t+" ziuas"],M:["'n mes","'iens mes"],MM:[t+" mesen",t+" mesen"],y:["'n ar","'iens ar"],yy:[t+" ars",t+" ars"]};return a?s[n][0]:e?s[n][0]:s[n][1]}return t.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(t){return"d'o"===t.toLowerCase()},meridiem:function(t,e,n){return t>11?n?"d'o":"D'O":n?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",ss:"%d ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("ug-cn",{months:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),monthsShort:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),weekdays:"يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە".split("_"),weekdaysShort:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),weekdaysMin:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-يىلىM-ئاينىڭD-كۈنى",LLL:"YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm",LLLL:"dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm"},meridiemParse:/يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,meridiemHour:function(t,e){return 12===t&&(t=0),"يېرىم كېچە"===e||"سەھەر"===e||"چۈشتىن بۇرۇن"===e?t:"چۈشتىن كېيىن"===e||"كەچ"===e?t+12:t>=11?t:t+12},meridiem:function(t,e,n){var a=100*t+e;return a<600?"يېرىم كېچە":a<900?"سەھەر":a<1130?"چۈشتىن بۇرۇن":a<1230?"چۈش":a<1800?"چۈشتىن كېيىن":"كەچ"},calendar:{sameDay:"[بۈگۈن سائەت] LT",nextDay:"[ئەتە سائەت] LT",nextWeek:"[كېلەركى] dddd [سائەت] LT",lastDay:"[تۆنۈگۈن] LT",lastWeek:"[ئالدىنقى] dddd [سائەت] LT",sameElse:"L"},relativeTime:{future:"%s كېيىن",past:"%s بۇرۇن",s:"نەچچە سېكونت",ss:"%d سېكونت",m:"بىر مىنۇت",mm:"%d مىنۇت",h:"بىر سائەت",hh:"%d سائەت",d:"بىر كۈن",dd:"%d كۈن",M:"بىر ئاي",MM:"%d ئاي",y:"بىر يىل",yy:"%d يىل"},dayOfMonthOrdinalParse:/\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"-كۈنى";case"w":case"W":return t+"-ھەپتە";default:return t}},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";function e(t,e){var n=t.split("_");return e%10==1&&e%100!=11?n[0]:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?n[1]:n[2]}function n(t,n,a){var s={ss:n?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:n?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:n?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===a?n?"хвилина":"хвилину":"h"===a?n?"година":"годину":t+" "+e(s[a],+t)}function a(t,e){var n={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};return!0===t?n.nominative.slice(1,7).concat(n.nominative.slice(0,1)):t?n[/(\[[ВвУу]\]) ?dddd/.test(e)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(e)?"genitive":"nominative"][t.day()]:n.nominative}function s(t){return function(){return t+"о"+(11===this.hours()?"б":"")+"] LT"}}return t.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:a,weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:s("[Сьогодні "),nextDay:s("[Завтра "),lastDay:s("[Вчора "),nextWeek:s("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return s("[Минулої] dddd [").call(this);case 1:case 2:case 4:return s("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",ss:n,m:n,mm:n,h:"годину",hh:n,d:"день",dd:n,M:"місяць",MM:n,y:"рік",yy:n},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(t){return/^(дня|вечора)$/.test(t)},meridiem:function(t,e,n){return t<4?"ночі":t<12?"ранку":t<17?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(t,e){switch(e){case"M":case"d":case"DDD":case"w":case"W":return t+"-й";case"D":return t+"-го";default:return t}},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";var e=["جنوری","فروری","مارچ","اپریل","مئی","جون","جولائی","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],n=["اتوار","پیر","منگل","بدھ","جمعرات","جمعہ","ہفتہ"];return t.defineLocale("ur",{months:e,monthsShort:e,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(t){return"شام"===t},meridiem:function(t,e,n){return t<12?"صبح":"شام"},calendar:{sameDay:"[آج بوقت] LT",nextDay:"[کل بوقت] LT",nextWeek:"dddd [بوقت] LT",lastDay:"[گذشتہ روز بوقت] LT",lastWeek:"[گذشتہ] dddd [بوقت] LT",sameElse:"L"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",ss:"%d سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹہ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماہ",MM:"%d ماہ",y:"ایک سال",yy:"%d سال"},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("uz",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",ss:"%d фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(t){return/^ch$/i.test(t)},meridiem:function(t,e,n){return t<12?n?"sa":"SA":n?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(t){return t},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ý~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",ss:"%d s~écóñ~ds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("yo",{months:"Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀".split("_"),monthsShort:"Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀".split("_"),weekdays:"Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta".split("_"),weekdaysShort:"Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá".split("_"),weekdaysMin:"Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Ònì ni] LT",nextDay:"[Ọ̀la ni] LT",nextWeek:"dddd [Ọsẹ̀ tón'bọ] [ni] LT",lastDay:"[Àna ni] LT",lastWeek:"dddd [Ọsẹ̀ tólọ́] [ni] LT",sameElse:"L"},relativeTime:{future:"ní %s",past:"%s kọjá",s:"ìsẹjú aayá die",ss:"aayá %d",m:"ìsẹjú kan",mm:"ìsẹjú %d",h:"wákati kan",hh:"wákati %d",d:"ọjọ́ kan",dd:"ọjọ́ %d",M:"osù kan",MM:"osù %d",y:"ọdún kan",yy:"ọdún %d"},dayOfMonthOrdinalParse:/ọjọ́\s\d{1,2}/,ordinal:"ọjọ́ %d",week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(t,e){return 12===t&&(t=0),"凌晨"===e||"早上"===e||"上午"===e?t:"下午"===e||"晚上"===e?t+12:t>=11?t:t+12},meridiem:function(t,e,n){var a=100*t+e;return a<600?"凌晨":a<900?"早上":a<1130?"上午":a<1230?"中午":a<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";case"M":return t+"月";case"w":case"W":return t+"周";default:return t}},relativeTime:{future:"%s内",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(t,e){return 12===t&&(t=0),"凌晨"===e||"早上"===e||"上午"===e?t:"中午"===e?t>=11?t:t+12:"下午"===e||"晚上"===e?t+12:void 0},meridiem:function(t,e,n){var a=100*t+e;return a<600?"凌晨":a<900?"早上":a<1130?"上午":a<1230?"中午":a<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";case"M":return t+"月";case"w":case"W":return t+"週";default:return t}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})})},function(t,e,n){!function(t,e){e(n(0))}(0,function(t){"use strict";return t.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(t,e){return 12===t&&(t=0),"凌晨"===e||"早上"===e||"上午"===e?t:"中午"===e?t>=11?t:t+12:"下午"===e||"晚上"===e?t+12:void 0},meridiem:function(t,e,n){var a=100*t+e;return a<600?"凌晨":a<900?"早上":a<1130?"上午":a<1230?"中午":a<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";case"M":return t+"月";case"w":case"W":return t+"週";default:return t}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})})},function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{default:t}}var s=n(8),i=a(s),r=n(34),o=a(r),d=n(215),l=a(d);window.addEventListener("load",function(){new i.default({el:"#rop_core",store:o.default,components:{MainPagePanel:l.default},created:function(){o.default.dispatch("fetchAJAX",{req:"manage_cron",data:{action:"status"}}),o.default.dispatch("fetchAJAXPromise",{req:"get_available_services"}),o.default.dispatch("fetchAJAXPromise",{req:"get_authenticated_services"}),o.default.dispatch("fetchAJAXPromise",{req:"get_active_accounts"})}})})},function(t,e,n){var a,s;n(216),a=n(218),s=n(311),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(217);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n #rop_core .badge[data-badge]::after {\n position: absolute;\n bottom: -16px;\n right: 0px;\n }\n\n #rop_core .rop-api-not-available {\n margin: 10px 0px 10px 0px;\n }\n\n #rop_core .badge.badge-logs::after {\n right: auto;\n top: 0px;\n }\n\n #rop_core .badge.badge-logs {\n padding-right: 10px;\n }\n",""])},function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{default:t}}var s=n(18),i=a(s),r=n(219),o=a(r),d=n(248),l=a(d),u=n(257),c=a(u),_=n(286),m=a(_),f=n(294),p=a(f),h=n(299),v=a(h),y=n(304),g=a(y),M=n(0),L=(a(M),n(80)),b=a(L);t.exports={name:"main-page-panel",computed:{is_preloading_over:function(){return this.$store.state.hide_preloading},displayTabs:function(){return this.$store.state.displayTabs},page:function(){return this.$store.state.page},is_rest_api_error:function(){return this.$store.state.api_not_available},is_fb_domain_notice:function(){return this.$store.state.fb_exception_toast},current_time:{get:function(){return this.$store.state.cron_status.current_time},set:function(t){this.$store.state.cron_status.current_time=t}},date_format:function(){return this.$store.state.cron_status.date_format},logs_no:function(){return this.$store.state.cron_status.logs_number},btn_class:function(){var t="btn-"+(this.start_status?"danger":"success");return this.haveAccountsActive||(t+=" tooltip button-disabled "),t},status_color_class:function(){var t="sharing-status-"+(this.start_status?"sharing":"notsharing");return this.haveAccountsActive||(t=" sharing-status-notsharing "),this.status_is_error_display?" sharing-status-error ":t},status_label_display:function(){var t=this.$store.state.labels.general,e=this.start_status?t.sharing_to_account:t.sharing_not_started;return this.haveAccountsActive||(e=t.sharing_not_started),this.status_is_error_display?t.status+": "+t.error_check_log:t.status+": "+e},status_is_error_display:function(){return this.status_is_error_display},haveAccounts:function(){return(0,i.default)(this.$store.state.authenticatedServices).length>0},haveAccountsActive:function(){return(0,i.default)(this.$store.state.activeAccounts).length>0},start_status:function(){return this.$store.state.cron_status.current_status},generalSettings:function(){return this.$store.state.generalSettings}},mounted:function(){var t=this;setInterval(function(){t.current_time>0&&(t.current_time+=1)},1e3),this.get_toast_message(!1)},created:function(){},data:function(){return{to_pro_upsell:ROP_ASSETS_URL+"img/to_pro.png",to_business_upsell:ROP_ASSETS_URL+"img/to_business.png",plugin_logo:ROP_ASSETS_URL+"img/logo_rop.png",license:this.$store.state.licence,labels:this.$store.state.labels.general,upsell_link:ropApiSettings.upsell_link,staging:ropApiSettings.staging,is_loading:!1,is_loading_logs:!1,status_is_error_display:!1}},methods:{close_fb_domain_notice:function(){var t=this;if(this.is_loading)return void this.$log.warn("Request in progress...Bail");this.$store.dispatch("fetchAJAXPromise",{req:"fb_exception_toast",data:{action:"hide"}}).then(function(e){t.$log.info("Succesfully closed facebook domain toast."),t.is_loading=!1},function(e){t.is_loading=!1,Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",e)})},togglePosting:function(){var t=this;if(this.is_loading)return void this.$log.warn("Request in progress...Bail");this.is_loading=!0;var e=!1===this.start_status?"start":"stop";this.$store.dispatch("fetchAJAXPromise",{req:"manage_cron",data:{action:e}}).then(function(e){t.is_loading=!1},function(e){t.is_loading=!1,Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",e)})},switchTab:function(t){this.$store.commit("setTabView",t)},get_toast_message:function(t){var e=this;if(this.is_loading_logs)return void this.$log.warn("Request in progress...Bail");this.is_loading_logs=!0,this.$store.dispatch("fetchAJAXPromise",{req:"get_toast",data:{force:t}}).then(function(t){if(e.$log.info("Succesfully fetched toast log."),e.is_loading_logs=!1,e.$store.dispatch("fetchAJAX",{req:"manage_cron",data:{action:"status"}}),t.length)for(var n in t)if("error"===t[n].type){var a={type:t[n].type,show:!0,title:"Error encountered",message:t[n].message};e.$store.commit("updateState",{stateData:a,requestName:"update_toast"})}else"status_error"===t[n].type&&(e.$log.warn("Status is error check logs, global admin notice will be displayed"),e.status_is_error_display=!0)},function(t){Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t),e.is_loading_logs=!1})}},components:{accounts:o.default,settings:l.default,"accounts-selector":c.default,queue:m.default,logs:p.default,"upsell-sidebar":b.default,toast:v.default,countdown:g.default}}},function(t,e,n){var a,s;n(220),a=n(222),s=n(247),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(221);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n #rop_core .columns.py-2 .text-gray[_v-45c67b1d] {\n margin: 0;\n line-height: normal;\n }\n\n #rop_core .input-group[_v-45c67b1d] {\n width: 100%;\n }\n\n b[_v-45c67b1d] {\n margin-bottom: 5px;\n display: block;\n }\n\n #rop_core .text-gray b[_v-45c67b1d] {\n display: inline;\n }\n\n #rop_core .input-group .input-group-addon[_v-45c67b1d] {\n padding: 3px 5px;\n }\n\n #rop_core .rop-available-accounts h5[_v-45c67b1d] {\n margin-bottom: 15px;\n }\n\n @media ( max-width: 600px ) {\n #rop_core .panel-body .text-gray[_v-45c67b1d] {\n margin-bottom: 10px;\n }\n\n #rop_core .text-right[_v-45c67b1d] {\n text-align: left;\n }\n }\n",""])},function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{default:t}}var s=n(18),i=a(s),r=n(85),o=a(r),d=n(227),l=a(d),u=n(232),c=a(u),_=n(237),m=a(_);t.exports={name:"account-view",data:function(){return{addAccountActive:!1,accountsCount:0,is_loading:!1,twitter_warning:!1,labels:this.$store.state.labels.accounts,upsell_link:ropApiSettings.upsell_link,pro_installed:ropApiSettings.pro_installed,is_preloading:this.$store.state.hide_preloading}},mounted:function(){0===this.is_preloading&&this.page_loader_module_display()},computed:{accounts:function(){var t={},e=0,n=this.$store.state.authenticatedServices;for(var a in n)if(n.hasOwnProperty(a)){var s=n[a];for(var r in s.available_accounts)s.available_accounts.hasOwnProperty(r)&&(t[r]=s.available_accounts[r],"twitter"===s.service&&(e+=(0,i.default)(s.available_accounts).length))}return this.twitter_warning=e>1,this.$log.info("All accounts: ",t),this.$log.debug("Preloading: ",this.$store.state.hide_preloading),this.accountsCount=(0,i.default)(t).length,this.is_preloading=this.$store.state.hide_preloading,t},checkLicense:function(){return this.$store.state.licence<1}},methods:{page_loader_module_display:function(){this.$refs.Preloader.show()},resetAccountData:function(){var t=this;if(this.is_loading)return void this.$log.warn("Request in progress...Bail");this.is_loading=!0,this.$store.dispatch("fetchAJAXPromise",{req:"reset_accounts",data:{}}).then(function(e){t.is_loading=!1,!0===t.$parent.start_status&&t.$parent.togglePosting(),t.$store.dispatch("fetchAJAXPromise",{req:"get_available_services"}).then(function(e){t.is_loading=!1})},function(e){t.is_loading=!1,Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",e)})}},components:{SignInBtn:o.default,ServiceUserTile:l.default,AddAccountTile:c.default,vue_spinner:m.default}}},function(t,e,n){var a=n(224);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n\t#rop-sign-in-area .btn[disabled][_v-90680408]{\n\t\tcursor:not-allowed;\n\t\tpointer-events: auto;\n\t\topacity: 0.3;\n\t}\n\t.big-btn#gmb-btn[_v-90680408]{\n\tpadding: 0 35px 0 14px;\n\t}\n\t.btn-gmb[_v-90680408]{\n\ttext-transform: uppercase;\n\t}\n\t#rop_core .btn.btn-buffer[_v-90680408]{\n\t\tdisplay: none;\n\t}\n",""])},function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{default:t}}var s=n(18),i=a(s),r=n(49),o=a(r);t.exports={name:"sign-in-btn",created:function(){},data:function(){return{modal:{isOpen:!1,serviceName:"",description:"",data:{}},showAdvanceConfig:!1,labels:this.$store.state.labels.accounts,upsell_link:ropApiSettings.upsell_link,activePopup:"",appOrigin:ropAuthAppData.authAppUrl,appPathFB:ropAuthAppData.authAppFacebookPath,appPathTW:ropAuthAppData.authAppTwitterPath,appPathLI:ropAuthAppData.authAppLinkedInPath,appPathBuffer:ropAuthAppData.authAppBufferPath,appPathTumblr:ropAuthAppData.authAppTumblrPath,appPathGmb:ropAuthAppData.authAppGmbPath,appAdminEmail:ropAuthAppData.adminEmail,siteAdminUrl:ropAuthAppData.adminUrl,appUniqueId:ropAuthAppData.authToken,appSignature:ropAuthAppData.authSignature,windowParameters:"top=20,left=100,width=560,height=670",authPopupWindow:null,showLiAppBtn:ropApiSettings.show_li_app_btn,showTmblrAppBtn:ropApiSettings.show_tmblr_app_btn,showBtn:!1}},methods:{getTooltip:function(t,e){if(void 0!==t&&!1===t.active)return this.labels.only_in_pro;var n=0;for(var a in this.$store.state.authenticatedServices)this.$store.state.authenticatedServices[a].service===e&&n++;var s=0;for(var i in this.$store.state.activeAccounts)this.$store.state.activeAccounts[i].service===e&&s++;return void 0!==t&&(t.allowed_accounts<=n||t.allowed_accounts<=s)?this.labels.limit_reached:""},checkDisabled:function(t,e){if(void 0!==t&&!1===t.active)return!0;var n=0;for(var a in this.$store.state.authenticatedServices)this.$store.state.authenticatedServices[a].service===e&&n++;var s=0;for(var i in this.$store.state.activeAccounts)this.$store.state.activeAccounts[i].service===e&&s++;return void 0!==t&&(t.allowed_accounts<=n||t.allowed_accounts<=s)||this.$store.state.auth_in_progress},requestAuthorization:function(t){this.selected_network=t,this.$store.state.auth_in_progress=!0,this.$store.state.availableServices[this.selected_network].two_step_sign_in?(this.modal.serviceName=this.$store.state.availableServices[this.selected_network].name,this.modal.description=this.$store.state.availableServices[this.selected_network].description,this.modal.data=this.$store.state.availableServices[this.selected_network].credentials,this.openModal()):(this.activePopup=this.selected_network,this.getUrlAndGo([]))},openPopup:function(t){this.$log.debug("Opening popup for url ",t),this.$store.commit("logMessage",["Trying to open popup for url:"+t,"notice"]),window.open(t,"_self")},getUrlAndGo:function(t){var e=this;this.$store.dispatch("fetchAJAXPromise",{req:"get_service_sign_in_url",updateState:!1,data:{service:this.selected_network,credentials:t}}).then(function(t){t.url&&""!=t.url?e.openPopup(t.url):(e.cancelModal(),alert("Could not authenticate, please make sure you entered the correct credentials."))},function(t){Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t)})},requestAuthentication:function(){this.$store.dispatch("fetchAJAX",{req:"authenticate_service",data:{service:this.selected_network}})},openModal:function(){this.modal.isOpen=!0},closeModal:function(){var t={},e=!0,n=!0,a=!1,s=void 0;try{for(var r,d=(0,o.default)((0,i.default)(this.modal.data));!(n=(r=d.next()).done);n=!0){var l=r.value;t[l]="","value"in this.modal.data[l]&&""!==this.modal.data[l].value?(t[l]=this.modal.data[l].value,this.modal.data[l].error=!1):(this.modal.data[l].error=!0,e=!1)}}catch(t){a=!0,s=t}finally{try{!n&&d.return&&d.return()}finally{if(a)throw s}}if(!e)return void this.$forceUpdate();this.activePopup=this.selected_network,this.getUrlAndGo(t),this.modal.isOpen=!1},cancelModal:function(){this.$store.state.auth_in_progress=!1,this.showAdvanceConfig=!1,this.modal.isOpen=!1},addAccountFB:function(t){var e=this;this.$store.dispatch("fetchAJAXPromise",{req:"add_account_fb",updateState:!1,data:t}).then(function(t){window.removeEventListener("message",function(t){return e.getChildWindowMessage(t)}),e.authPopupWindow.close(),window.location.reload()},function(t){e.is_loading=!1,Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t)})},addAccountTW:function(t){var e=this;this.$store.dispatch("fetchAJAXPromise",{req:"add_account_tw",updateState:!1,data:t}).then(function(t){window.removeEventListener("message",function(t){return e.getChildWindowMessage(t)}),e.authPopupWindow.close(),window.location.reload()},function(t){e.is_loading=!1,Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t)})},addAccountLI:function(t){var e=this;this.$store.dispatch("fetchAJAXPromise",{req:"add_account_li",updateState:!1,data:t}).then(function(t){window.removeEventListener("message",function(t){return e.getChildWindowMessage(t)}),e.authPopupWindow.close(),window.location.reload()},function(t){e.is_loading=!1,Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t)})},addAccountBuffer:function(t){var e=this;this.$store.dispatch("fetchAJAXPromise",{req:"add_account_buffer",updateState:!1,data:t}).then(function(t){window.removeEventListener("message",function(t){return e.getChildWindowMessage(t)}),e.authPopupWindow.close(),window.location.reload()},function(t){e.is_loading=!1,Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t)})},addAccountTumblr:function(t){var e=this;this.$store.dispatch("fetchAJAXPromise",{req:"add_account_tumblr",updateState:!1,data:t}).then(function(t){window.removeEventListener("message",function(t){return e.getChildWindowMessage(t)}),e.authPopupWindow.close(),window.location.reload()},function(t){e.is_loading=!1,Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t)})},addAccountGmb:function(t){var e=this;this.$store.dispatch("fetchAJAXPromise",{req:"add_account_gmb",updateState:!1,data:t}).then(function(t){window.removeEventListener("message",function(t){return e.getChildWindowMessage(t)}),e.authPopupWindow.close(),window.location.reload()},function(t){e.is_loading=!1,Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t)})},getChildWindowMessage:function(t){~t.origin.indexOf(this.appOrigin)&&("Twitter"===this.modal.serviceName?this.addAccountTW(JSON.parse(t.data)):"Facebook"===this.modal.serviceName?this.addAccountFB(JSON.parse(t.data)):"LinkedIn"===this.modal.serviceName?this.addAccountLI(JSON.parse(t.data)):"Buffer"===this.modal.serviceName?this.addAccountBuffer(JSON.parse(t.data)):"Tumblr"===this.modal.serviceName?this.addAccountTumblr(JSON.parse(t.data)):"Gmb"===this.modal.serviceName&&this.addAccountGmb(JSON.parse(t.data)))},openPopupFB:function(){var t=this,e=this.appOrigin+this.appPathFB+"?callback_url="+this.siteAdminUrl+"&token="+this.appUniqueId+"&signature="+this.appSignature+"&data="+this.appAdminEmail;try{this.authPopupWindow.close()}catch(t){}finally{this.authPopupWindow=window.open(e,"authFB",this.windowParameters),this.cancelModal()}window.addEventListener("message",function(e){return t.getChildWindowMessage(e)})},openPopupTW:function(){var t=this,e=this.appOrigin+this.appPathTW+"?callback_url="+this.siteAdminUrl+"&token="+this.appUniqueId+"&signature="+this.appSignature+"&data="+this.appAdminEmail;try{this.authPopupWindow.close()}catch(t){}finally{this.authPopupWindow=window.open(e,"authTW",this.windowParameters),this.cancelModal()}window.addEventListener("message",function(e){return t.getChildWindowMessage(e)})},openPopupLI:function(){var t=this,e=this.appOrigin+this.appPathLI+"?callback_url="+this.siteAdminUrl+"&token="+this.appUniqueId+"&signature="+this.appSignature+"&data="+this.appAdminEmail;try{this.authPopupWindow.close()}catch(t){}finally{this.authPopupWindow=window.open(e,"authLI",this.windowParameters),this.cancelModal()}window.addEventListener("message",function(e){return t.getChildWindowMessage(e)})},openPopupBuffer:function(){var t=this,e=this.appOrigin+this.appPathBuffer+"?callback_url="+this.siteAdminUrl+"&token="+this.appUniqueId+"&signature="+this.appSignature+"&data="+this.appAdminEmail;try{this.authPopupWindow.close()}catch(t){}finally{this.authPopupWindow=window.open(e,"authLI",this.windowParameters),this.cancelModal()}window.addEventListener("message",function(e){return t.getChildWindowMessage(e)})},openPopupTumblr:function(){var t=this,e=this.appOrigin+this.appPathTumblr+"?callback_url="+this.siteAdminUrl+"&token="+this.appUniqueId+"&signature="+this.appSignature+"&data="+this.appAdminEmail;try{this.authPopupWindow.close()}catch(t){}finally{this.authPopupWindow=window.open(e,"authTmblr",this.windowParameters),this.cancelModal()}window.addEventListener("message",function(e){return t.getChildWindowMessage(e)})},openPopupGmb:function(){var t=this,e=this.appOrigin+this.appPathGmb+"?callback_url="+this.siteAdminUrl+"&token="+this.appUniqueId+"&signature="+this.appSignature+"&data="+this.appAdminEmail;try{this.authPopupWindow.close()}catch(t){}finally{this.authPopupWindow=window.open(e,"authGmb",this.windowParameters),this.cancelModal()}window.addEventListener("message",function(e){return t.getChildWindowMessage(e)})}},computed:{selected_service:function(){return this.services[this.selected_network]},selected_network:{get:function(){var t=this.modal.serviceName;return(0,i.default)(this.services)[0]&&""===t&&(t=(0,i.default)(this.services)[0]),t.toLowerCase()},set:function(t){this.modal.serviceName=t}},services:function(){return this.$store.state.availableServices},modalActiveClass:function(){return{active:!0===this.modal.isOpen}},serviceId:function(){return"service-"+this.modal.serviceName.toLowerCase()},isFacebook:function(){return"Facebook"===this.modal.serviceName},isTwitter:function(){return"Twitter"===this.modal.serviceName},isLinkedIn:function(){return"LinkedIn"===this.modal.serviceName},isBuffer:function(){return"Buffer"===this.modal.serviceName},isTumblr:function(){return"Tumblr"===this.modal.serviceName},isGmb:function(){return"Gmb"===this.modal.serviceName},isPinterest:function(){return"Pinterest"===this.modal.serviceName},isAllowedTumblr:function(){var t=!0;return this.showTmblrAppBtn||(t=!1),t}}}},function(t,e){t.exports='\n\t<div id="rop-sign-in-area" _v-90680408="">\n\t\t<div class="input-group text-right buttons-wrap" _v-90680408="">\n\t\t\t<button v-for="( service, network ) in services" :disabled="checkDisabled( service, network )" :title="getTooltip( service, network )" class="btn input-group-btn" :class="\'btn-\' + network" @click="requestAuthorization( network )" _v-90680408="">\n\t\t\t\t<i v-if="network !== \'buffer\' && network !== \'gmb\'" class="fa fa-fw" :class="\'fa-\' + network" _v-90680408=""></i>\n\t\t\t\t<i v-if="network === \'buffer\'" class="fa fa-fw fa-plus-square" _v-90680408=""></i>\n\t\t\t\t<i v-if="network === \'gmb\'" class="fa fa-fw fa-google" _v-90680408=""></i>\n\t\t\t\t{{service.name}}\n\t\t\t</button>\n\n\t\t</div>\n\n\t\t<div class="modal" :class="modalActiveClass" _v-90680408="">\n\t\t\t<div class="modal-overlay" _v-90680408=""></div>\n\t\t\t<div class="modal-container" _v-90680408="">\n\t\t\t\t<div class="modal-header" _v-90680408="">\n\t\t\t\t\t<button class="btn btn-clear float-right" @click="cancelModal()" _v-90680408=""></button>\n\t\t\t\t\t<div class="modal-title h5" _v-90680408="">{{ modal.serviceName }} {{labels.service_popup_title}}</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-body" _v-90680408="">\n\t\t\t\t\t<div class="content" _v-90680408="">\n\t\t\t\t\t\t<div class="auth-app" v-if="isFacebook" _v-90680408="">\n\t\t\t\t\t\t\t<button class="btn btn-primary big-btn" @click="openPopupFB()" _v-90680408="">{{labels.fb_app_signin_btn}}</button>\n\t\t\t\t\t\t\t<span class="text-center" _v-90680408="">{{labels.app_option_signin}}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="auth-app" v-if="isTwitter" _v-90680408="">\n\t\t\t\t\t\t\t<button class="btn btn-primary big-btn" @click="openPopupTW()" _v-90680408="">{{labels.tw_app_signin_btn}}</button>\n\t\t\t\t\t\t\t<span class="text-center" _v-90680408="">{{labels.app_option_signin}}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="auth-app" v-if="isLinkedIn" _v-90680408="">\n\t\t\t\t\t\t\t<button class="btn btn-primary big-btn" @click="openPopupLI()" _v-90680408="">{{labels.li_app_signin_btn}}</button>\n\t\t\t\t\t\t\t<span class="text-center" _v-90680408="">{{labels.app_option_signin}}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="auth-app" v-if="isTumblr && isAllowedTumblr" _v-90680408="">\n\t\t\t\t\t\t\t<button class="btn btn-primary big-btn" @click="openPopupTumblr()" _v-90680408="">{{labels.tumblr_app_signin_btn}}</button>\n\t\t\t\t\t\t\t<span class="text-center" _v-90680408="">{{labels.app_option_signin}}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="auth-app" v-if="isBuffer" _v-90680408="">\n\t\t\t\t\t\t\t<button class="btn btn-primary big-btn" @click="openPopupBuffer()" _v-90680408="">{{labels.buffer_app_signin_btn}}</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="auth-app" v-if="isGmb" _v-90680408="">\n\t\t\t\t\t\t\t<button class="btn btn-primary big-btn" id="gmb-btn" @click="openPopupGmb()" _v-90680408="">{{labels.gmb_app_signin_btn}}</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div id="rop-advanced-config" v-if="isFacebook || isTwitter || isLinkedIn || (isTumblr && isAllowedTumblr)" _v-90680408="">\n\t\t\t\t\t\t<button class="btn btn-primary" v-on:click="showAdvanceConfig = !showAdvanceConfig" _v-90680408="">{{labels.show_advance_config}}</button>\n\t\t\t\t\t</div>\n\t\t\t\t\t\t<div v-if="showAdvanceConfig && (isFacebook || isTwitter || isLinkedIn || (isTumblr && isAllowedTumblr) )" _v-90680408="">\n\t\t\t\t\t\t<div class="form-group" v-for="( field, id ) in modal.data" _v-90680408="">\n\t\t\t\t\t\t\t<label class="form-label" :for="field.id" _v-90680408="">{{ field.name }}</label>\n\t\t\t\t\t\t\t<input :class="[ \'form-input\', field.error ? \' is-error\' : \'\' ]" type="text" :id="field.id" v-model="field.value" :placeholder="field.name" _v-90680408="">\n\t\t\t\t\t\t\t<small class="text-error" v-if="field.error" _v-90680408="">{{labels.field_required}}</small>\n\t\t\t\t\t\t\t<p class="text-gray" _v-90680408="">{{ field.description }}</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\t<div v-if="(!isTwitter && !isFacebook && !isLinkedIn && !isBuffer && !isGmb && !isTumblr) || (isTumblr && !isAllowedTumblr)" _v-90680408="">\n\t\t\t\t\t\t<div class="form-group" v-for="( field, id ) in modal.data" _v-90680408="">\n\t\t\t\t\t\t\t<label class="form-label" :for="field.id" _v-90680408="">{{ field.name }}</label>\n\t\t\t\t\t\t\t<input :class="[ \'form-input\', field.error ? \' is-error\' : \'\' ]" type="text" :id="field.id" v-model="field.value" :placeholder="field.name" _v-90680408="">\n\t\t\t\t\t\t\t<small class="text-error" v-if="field.error" _v-90680408="">{{labels.field_required}}</small>\n\t\t\t\t\t\t\t<p class="text-gray" _v-90680408="">{{ field.description }}</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div v-if="isFacebook || isTwitter || isLinkedIn || isBuffer || isGmb || (isTumblr && isAllowedTumblr)" class="modal-footer" _v-90680408="">\n\t\t\t\t\t<p class="text-left pull-left mr-2" v-html="labels.rs_app_info" _v-90680408=""></p>\n\t\t\t\t</div>\n\t\t\t\t<div v-if="showAdvanceConfig && (isFacebook || isTwitter || isLinkedIn || isTumblr)" class="modal-footer" _v-90680408="">\n\t\t\t\t\t<div class="text-left pull-left mr-2" v-html="modal.description" _v-90680408=""></div>\n\t\t\t\t\t<button class="btn btn-primary" @click="closeModal()" _v-90680408="">{{labels.sign_in_btn}}</button>\n\t\t\t\t</div>\n\t\t\t\t<div v-if="(!isTwitter && !isFacebook && !isLinkedIn && !isBuffer && !isGmb && !isTumblr) || (isTumblr && !isAllowedTumblr)" class="modal-footer" _v-90680408="">\n\t\t\t\t\t<div class="text-left pull-left mr-2" v-html="modal.description" _v-90680408=""></div>\n\t\t\t\t\t<button class="btn btn-primary" @click="closeModal()" _v-90680408="">{{labels.sign_in_btn}}</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n'},function(t,e,n){var a,s;n(228),a=n(230),s=n(231),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(229);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n\t.rop-remove-account[_v-1669a290]{\n\t\twidth:15px;\n\t\ttext-align: center;\n\t\tcursor: pointer;\n\t\theight: 100%;\n\t\t-ms-flex: 0 0 auto;\n\t\tline-height: 40px;\n\t\topacity: 1;\n\t\tmargin-left:0;\n\t\ttransition-timing-function: ease-in;\n\t\ttransition: 1s;\n\t\tz-index:9999;\n\t}\n\n",""])},function(t,e,n){"use strict";var a=n(8),s=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports={name:"service-user-tile",props:["account_data","account_id"],data:function(){return{is_loading:!1,labels:this.$store.state.labels.accounts,upsell_link:ropApiSettings.upsell_link}},computed:{checkDisabled:function(){if(this.account_data.active)return!1;var t=this.$store.state.availableServices;if(void 0===t[this.account_data.service])return this.$log.info("No available service ",this.account_data.service),!0;if(!1===t[this.account_data.service].active)return this.$log.info("Service is not allowed",this.account_data.service),!0;var e=t[this.account_data.service].allowed_accounts;if("facebook"===this.account_data.service&&this.user.includes("Facebook Group:")&&!this.isPro)return!0;var n=0;for(var a in this.$store.state.activeAccounts)this.$store.state.activeAccounts[a].service===this.account_data.service&&n++;return this.$log.info("Service limit details ",this.account_data.service,e,n),e<=n},isPro:function(){return this.$store.state.licence>0},type:function(){return!0===this.account_data.active?"active":"inactive"},service:function(){var t=this.account_data.service;return t=""!==this.img?t.concat(" ").concat("has_image"):t.concat(" ").concat("no-image")},icon:function(){var t="fa-";return"facebook"===this.account_data.service&&(t=t.concat("facebook")),"twitter"===this.account_data.service&&(t=t.concat("twitter")),"linkedin"===this.account_data.service&&(t=t.concat("linkedin")),"tumblr"===this.account_data.service&&(t=t.concat("tumblr")),"pinterest"===this.account_data.service&&(t=t.concat("pinterest")),t},img:function(){var t="";return""!==this.account_data.img&&void 0!==this.account_data.img&&(t=this.account_data.img),t},user:function(){return this.account_data.user},link:function(){return this.account_data.link},serviceInfo:function(){return this.account_data.account.concat(" "+this.labels.at+": ").concat(this.account_data.created)}},methods:{removeAccount:function(t){var e=this;if(s.default.$log.info("Remove account",t),this.is_loading)return void s.default.$log.warn("Request in progress...Bail...",t);this.is_loading=!0,this.$store.dispatch("fetchAJAXPromise",{req:"remove_account",data:{account_id:t}}).then(function(t){e.$store.dispatch("fetchAJAXPromise",{req:"get_authenticated_services"}).then(function(t){e.is_loading=!1},function(t){e.is_loading=!1}),e.$store.dispatch("fetchAJAXPromise",{req:"get_available_services"}).then(function(t){},function(t){s.default.$log.error("service-user-tile.vue => fetchAJAXPromise::get_available_services issue: ",t)})},function(t){e.is_loading=!1,s.default.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t)})},toggleAccount:function(t,e){var n=this,a=t.split("_");if(3!==a.length)return void s.default.$log.error("Invalid id format for active account ",t);var i=a[0]+"_"+a[1];this.$store.state.authenticatedServices[i].available_accounts[t].active="inactive"!==e,this.$log.info("Before toggle ",this.$store.state.activeAccounts),"inactive"===e?s.default.delete(this.$store.state.activeAccounts,t):s.default.set(this.$store.state.activeAccounts,t,this.$store.state.authenticatedServices[i].available_accounts[t]),this.$store.dispatch("fetchAJAXPromise",{req:"toggle_account",data:{account_id:t,state:e}}).then(function(t){n.$store.dispatch("fetchAJAXPromise",{req:"get_authenticated_services"}).then(function(t){n.is_loading=!1},function(t){n.is_loading=!1})},function(t){n.is_loading=!1,s.default.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t)})},startToggleAccount:function(t,e){if(s.default.$log.info("Toggle account",t,e),this.is_loading)return void s.default.$log.warn("Request in progress...Bail...",t,e);this.is_loading=!0,this.toggleAccount(t,e)}}}},function(t,e){t.exports='\n\t<div class="tile tile-centered rop-account" :class="\'rop-\'+type+\'-account\'" _v-1669a290="">\n\n\t\t<div class="tile-icon" _v-1669a290="">\n\t\t\t<div class="icon_box" :class="service" _v-1669a290="">\n\t\t\t\t<img class="service_account_image" :src="img" v-if="img" _v-1669a290="">\n\t\t\t\t<i class="fa " :class="icon" aria-hidden="true" _v-1669a290=""></i>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="tile-content" _v-1669a290="">\n\t\t\t<div class="tile-title" _v-1669a290=""><a :href="link" target="_blank" _v-1669a290="">{{ user }}</a></div>\n\t\t\t<div class="tile-subtitle text-gray" _v-1669a290="">{{ serviceInfo }}</div>\n\t\t</div>\n\t\t<div class="tile-action" _v-1669a290="">\n\t\t\t<div class="form-group" _v-1669a290="">\n\t\t\t\t<label class="form-switch" _v-1669a290="">\n\t\t\t\t\t<div class="ajax-loader " _v-1669a290=""><i class="fa fa-spinner fa-spin" v-show="is_loading" _v-1669a290=""></i></div>\n\t\t\t\t\t<input :disabled="checkDisabled" type="checkbox" v-model="account_data.active" @change="startToggleAccount( account_id, type )" _v-1669a290="">\n\t\t\t\t\t<i class="form-icon" _v-1669a290=""></i>\n\t\t\t\t</label>\n\t\t\t</div>\n\n \t\t<div class="tile-icon rop-remove-account tooltip tooltip-right" @click="removeAccount(account_id) " :data-tooltip="labels.remove_account" v-if=" ! account_data.active" _v-1669a290="">\n\t\t\t<i class="fa fa-trash" v-if=" ! is_loading" _v-1669a290=""></i>\n\t\t\t<i class="fa fa-spinner fa-spin" v-else="" _v-1669a290=""></i>\n\t\t</div>\n\n\t\t</div>\n\t</div>\n'},function(t,e,n){var a,s;n(233),a=n(235),s=n(236),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(234);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n\t.icon_box[_v-c7c6b28e] {\n\t\tbackground: #efefef;\n\t\tpadding: 0;\n\t\ttransition: .3s ease;\n\t}\n\n\t.icon_box.close .fa[_v-c7c6b28e] {\n\t\tline-height: 1.6em;\n\t}\n\n\t.icon_box.open .fa[_v-c7c6b28e] {\n\t\tline-height: 1.7em;\n\t\twidth: 20px;\n\t\ttransform: rotate(-135deg);\n\t\t-webkit-transform: rotate(-135deg);\n\t}\n\n\t.fa[_v-c7c6b28e] {\n\t\ttransition: all .3s cubic-bezier(.34, 1.61, .7, 1);\n\t}\n\n",""])},function(t,e,n){"use strict";var a=n(85),s=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports={name:"add-account-tile",data:function(){return{addAccountActive:!1,labels:this.$store.state.labels.accounts,upsell_link:ropApiSettings.upsell_link,add_more_clicked:!1,added_networks:ropApiSettings.added_networks}},computed:{},components:{SignInBtn:s.default},methods:{addMore:function(){this.add_more_clicked=!0}}}},function(t,e){t.exports='\n\t<div _v-c7c6b28e="">\n\t\t<div class="tile-content" _v-c7c6b28e="">\n\t\t</div>\n\t\t<div class="rop-add-account" _v-c7c6b28e="">\n <button class="btn btn-secondary" v-if="!this.add_more_clicked && this.added_networks >= 2" @click="addMore()" _v-c7c6b28e="">\n <i class="fa fa-plus" _v-c7c6b28e=""></i>{{labels.add_all_cta}}\n </button>\n\n\t\t\t\t\t<sign-in-btn v-if="this.add_more_clicked || this.added_networks < 2" _v-c7c6b28e=""></sign-in-btn>\n\t\t</div>\n\t</div>\n'},function(t,e,n){var a,s;n(238),a=n(240),s=n(246),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(239);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n .preloader-container[_v-0bef4ce3] {\n position: relative;\n z-index: 9998;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n margin: auto;\n width: 100%;\n height: 218px;\n background-color: rgba(255, 255, 255, 0.1);\n display: block;\n }\n\n .preloader-body[_v-0bef4ce3] {\n width: 350px;\n height: 80px;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n margin: auto;\n text-align: center;\n display: block;\n }\n",""])},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n(241),s=function(t){return t&&t.__esModule?t:{default:t}}(a),i={"loader-style":s.default};e.default={name:"vue-spinner",mounted:function(){},props:{spinner_style:{type:String,default:"loader-style"},loading:{type:Boolean,default:!0},color:{type:String,default:"#429bf4"},size:{type:String,default:"30px"},margin:{type:String,default:"2px"},radius:{type:String,default:"100%"},preloader_message:{type:String,default:"Loading..."}},data:function(){return{display_the_preloader:!1,loading_message:this.preloader_message}},components:i,methods:{show:function(){this.display_the_preloader=!0},hide:function(){this.display_the_preloader=!1}}}},function(t,e,n){var a,s;n(242),a=n(244),s=n(245),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(243);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n\n .preloader-loading-item .normal-dot[_v-8eaa7080] {\n animation: dot-do-animation 0.7s infinite linear;\n animation-fill-mode: both;\n display: inline-block;\n }\n\n .preloader-loading-item .normal-dot-odd[_v-8eaa7080] {\n animation-delay: 0s;\n }\n\n .preloader-loading-item .normal-dot-even[_v-8eaa7080] {\n animation-delay: 0.50s;\n }\n\n @keyframes dot-do-animation {\n 50% {\n transform: scale(0.75);\n -webkit-opacity: 0.2;\n opacity: 0.2;\n }\n 100% {\n transform: scale(1);\n -webkit-opacity: 1;\n opacity: 1;\n }\n }\n",""])},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={name:"preload_three_dots",props:{loading:{type:Boolean,default:!0},color:{type:String,default:"#5dc596"},size:{type:String,default:"15px"},margin:{type:String,default:"2px"},radius:{type:String,default:"100%"}},data:function(){return{dot_style:{backgroundColor:this.color,height:this.size,width:this.size,margin:this.margin,borderRadius:this.radius}}}}},function(t,e){t.exports='\n <div class="preloader-loading-item" v-show="loading" _v-8eaa7080="">\n <div class="normal-dot normal-dot-odd" v-bind:style="dot_style" _v-8eaa7080=""></div>\n <div class="normal-dot normal-dot-even" v-bind:style="dot_style" _v-8eaa7080=""></div>\n <div class="normal-dot normal-dot-odd" v-bind:style="dot_style" _v-8eaa7080=""></div>\n </div>\n'},function(t,e){t.exports='\n <transition v-if="display_the_preloader" _v-0bef4ce3="">\n <div class="preloader-container" _v-0bef4ce3="">\n <div class="preloader-body text-center" _v-0bef4ce3="">\n <p class="empty-title h5" v-html="loading_message" _v-0bef4ce3=""></p>\n <component v-bind:is="spinner_style" :loading="loading" :color="color" :size="size" :margin="margin" :radius="radius" _v-0bef4ce3=""></component>\n </div>\n </div>\n </transition>\n'},function(t,e){t.exports='\n <div class="tab-view" _v-45c67b1d="">\n <div class="panel-body" _v-45c67b1d="">\n <div class="toast toast-warning" v-html="labels.twitter_warning" v-if="twitter_warning" _v-45c67b1d="">\n\n </div>\n <div class="container" _v-45c67b1d="">\n <div class="columns" :class="\'rop-tab-state-\'+is_loading" _v-45c67b1d="">\n <div class="column col-sm-12 col-md-12 col-lg-12 text-left rop-available-accounts mt-2" _v-45c67b1d="">\n <vue_spinner :preloader_message="labels.preloader_message_accounts" ref="Preloader" v-if="is_preloading === 0" _v-45c67b1d=""></vue_spinner>\n <div class="empty mb-2" v-if="accountsCount === 0 && is_preloading > 0" _v-45c67b1d="">\n <div class="empty-icon" _v-45c67b1d="">\n <i class="fa fa-3x fa-user-circle-o" _v-45c67b1d=""></i>\n </div>\n <p class="empty-title h5" _v-45c67b1d="">{{labels.no_accounts}}</p>\n <p class="empty-subtitle" _v-45c67b1d="">{{labels.no_accounts_desc}}</p>\n </div>\n <div class="account-container" v-for="( account, id ) in accounts" v-if="is_preloading > 0" _v-45c67b1d="">\n <service-user-tile :account_data="account" :account_id="id" _v-45c67b1d=""></service-user-tile>\n <span class="divider" _v-45c67b1d=""></span>\n </div>\n <div class="add-accounts" v-if="is_preloading > 0" id="rop-add-account-button" _v-45c67b1d="">\n <add-account-tile _v-45c67b1d=""></add-account-tile>\n <span class="divider" _v-45c67b1d=""></span>\n </div>\n </div>\n </div>\n </div>\n <div class="panel-footer" v-if="is_preloading > 0" _v-45c67b1d="">\n <div class="columns my-2" v-if="checkLicense && pro_installed" _v-45c67b1d="">\n <div class="column col-12" _v-45c67b1d="">\n <i class="fa fa-info-circle " _v-45c67b1d=""></i> <span v-html="labels.activate_license" _v-45c67b1d=""></span>\n </div>\n </div>\n <div class="columns my-2" v-if="(checkLicense && accountsCount === 2) && !pro_installed" _v-45c67b1d="">\n <div class="column col-12" _v-45c67b1d="">\n <p class="upsell" _v-45c67b1d="">\n <i class="fa fa-info-circle " _v-45c67b1d=""></i> <span v-html="labels.upsell_accounts" _v-45c67b1d=""></span>\n </p>\n </div>\n </div>\n <div class="column col-12 text-right" _v-45c67b1d="">\n <button class="btn btn-secondary" @click="resetAccountData()" _v-45c67b1d="">\n <i class="fa fa-ban" v-if="!this.is_loading" _v-45c67b1d=""></i>\n <i class="fa fa-spinner fa-spin" v-else="" _v-45c67b1d=""></i>\n {{labels.remove_all_cta}}\n </button>\n </div>\n </div>\n </div>\n\n </div>\n'},function(t,e,n){var a,s;n(249),a=n(251),s=n(256),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(250);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n\t#rop_core .panel-body .text-gray[_v-e19866cc] {\n\t\tmargin: 0;\n\t\tline-height: normal;\n\t}\n\n\t#rop_core .input-group[_v-e19866cc] {\n\t\twidth: 100%;\n\t}\n\n\tb[_v-e19866cc] {\n\t\tmargin-bottom: 5px;\n\t\tdisplay: block;\n\t}\n\n\t#rop_core .input-group .input-group-addon[_v-e19866cc] {\n\t\tpadding: 3px 5px;\n\t}\n\n\t@media ( max-width: 600px ) {\n\t\t#rop_core .panel-body .text-gray[_v-e19866cc] {\n\t\t\tmargin-bottom: 10px;\n\t\t}\n\n\t\t#rop_core .text-right[_v-e19866cc] {\n\t\t\ttext-align: left;\n\t\t}\n\t}\n\n\t.rop-post-type-badge[_v-e19866cc]{\n\t\ttext-align: center;\n\n\t}\n",""])},function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{default:t}}var s=n(86),i=a(s),r=n(52),o=a(r);t.exports={name:"settings-view",data:function(){return{searchQuery:"",postTimeout:"",labels:this.$store.state.labels.settings,upsell_link:ropApiSettings.upsell_link,is_loading:!1,is_taxonomy_message:!1}},computed:{generalSettings:function(){return this.$store.state.generalSettings},isPro:function(){return this.$store.state.licence>=1},isTaxLimit:function(){return ropApiSettings.tax_apply_limit>0},isBiz:function(){return this.$store.state.licence>1},postTypes:function(){return this.$store.state.generalSettings.available_post_types},taxonomies:function(){return this.$store.state.generalSettings.available_taxonomies},checkMediaPostType:function(){var t=this.$store.state.generalSettings.selected_post_types;return void 0!==t&&null!==t&&(!(t.length<0)&&t.map(function(t){return t.value}).indexOf("attachment")>-1)},isInstantShare:function(){return this.$store.state.generalSettings.instant_share},isCustomMsgs:function(){return this.$store.state.generalSettings.custom_messages}},mounted:function(){this.$log.info("In General Settings state "),this.getGeneralSettings()},methods:{displayProMessage:function(t){!this.isPro&&t>=4&&(!0===this.isTaxLimit?this.is_taxonomy_message=!0:this.is_taxonomy_message=!1)},getGeneralSettings:function(){var t=this;0===this.$store.state.generalSettings.length&&(this.is_loading=!0,this.$log.info("Fetching general settings."),this.$store.dispatch("fetchAJAXPromise",{req:"get_general_settings"}).then(function(e){t.is_loading=!1,t.$log.debug("Succesfully fetched.")},function(e){t.is_loading=!1,t.$log.error("Can not fetch the general settings.")}))},searchUpdate:function(t){this.searchQuery=t},updatedPostTypes:function(t){var e=[];for(var n in t)e.push(t[n].value);this.$store.commit("updateState",{stateData:t,requestName:"update_selected_post_types"}),this.$store.dispatch("fetchAJAX",{req:"get_taxonomies",data:{post_types:e}})},updatedTaxonomies:function(t){var e=[];if(this.isPro||!1===this.isTaxLimit){this.is_taxonomy_message=!1;for(var n in t)e.push(t[n].value);this.$store.commit("updateState",{stateData:t,requestName:"update_selected_taxonomies"})}else if(t.length>3)this.is_taxonomy_message=!0;else{this.is_taxonomy_message=!1;for(var a in t)e.push(t[a].value);this.$store.commit("updateState",{stateData:t,requestName:"update_selected_taxonomies"})}},saveGeneralSettings:function(){var t=this,e=this.$store.state.generalSettings.selected_post_types,n=this.$store.state.generalSettings.selected_taxonomies,a=this.generalSettings.exclude_taxonomies;this.generalSettings.selected_posts;this.is_loading=!0,this.$log.info("Sending request for saving general settings.."),this.$store.dispatch("fetchAJAXPromise",{req:"save_general_settings",updateState:!1,data:{available_taxonomies:this.generalSettings.available_taxonomies,default_interval:this.generalSettings.default_interval,minimum_post_age:this.generalSettings.minimum_post_age,maximum_post_age:this.generalSettings.maximum_post_age,number_of_posts:this.generalSettings.number_of_posts,more_than_once:this.generalSettings.more_than_once,selected_post_types:e,selected_taxonomies:n,exclude_taxonomies:a,ga_tracking:this.generalSettings.ga_tracking,custom_messages:this.generalSettings.custom_messages,custom_messages_share_order:this.generalSettings.custom_messages_share_order,instant_share:this.generalSettings.instant_share,true_instant_share:this.generalSettings.true_instant_share,instant_share_default:this.generalSettings.instant_share_default,instant_share_future_scheduled:this.generalSettings.instant_share_future_scheduled,housekeeping:this.generalSettings.housekeeping}}).then(function(e){t.is_loading=!1,t.$log.info("Successfully saved general settings.")},function(e){t.$log.error("Successfully saved general settings."),t.is_loading=!1,Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",e)})}},components:{counterInput:i.default,MultipleSelect:o.default}}},function(t,e,n){var a=n(253);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n\t#rop_core .input-group.rop-counter-group {\n\t\tposition: relative;\n\t\twidth: 100%;\n\t}\n\t\n\t#rop_core .btn.increment-btn {\n\t\tposition: absolute;\n\t\tright: 0;\n\t\twidth: 1rem;\n\t\theight: 0.85rem;\n\t\tpadding: 0.025rem 0.010rem;\n\t\tline-height: 0.3rem;\n\t\tz-index: 2;\n\t\tcolor: #ababab;\n\t\tborder-color: #ababab;\n\t}\n\t\n\t#rop_core .btn.increment-btn:hover, #rop_core .btn.increment-btn:active, #rop_core .btn.increment-btn:focus {\n\t\tbackground-color: #00a6e3;\n\t\tcolor: #fff;\n\t\tborder-color: #00a6e3;\n\t}\n\t\n\t#rop_core .btn.increment-btn.up {\n\t\ttop: 0;\n\t}\n\t\n\t#rop_core .btn.increment-btn.down {\n\t\tbottom: 0;\n\t}\n\t\n\tinput.rop-counter::-webkit-inner-spin-button {\n\t\tdisplay: none;\n\t}\n",""])},function(t,e,n){"use strict";var a=null;t.exports={name:"counter-input",props:{id:{default:""},value:{default:0,type:Number},allowNegative:{default:!1,type:Boolean},minVal:{default:0,type:Number},maxVal:{default:0,type:Number}},data:function(){return{pressStartTime:null,incrementUp:0,incrementDown:0,inputValue:0}},computed:{inputValueC:{get:function(){return this.value},set:function(t){this.inputValue=parseFloat(t),this.$emit("update:value",this.inputValue)}}},methods:{updateInput:function(){this.inputValue=this.value.toString(),this.inputValue=parseFloat(this.inputValue);var t=new Date,e=parseInt((t.getTime()-this.pressStartTime.getTime())/1e3),n=e;0===e&&(n=1),n=parseInt(n),1===this.incrementUp&&(this.inputValue+=n,this.inputValue>this.maxVal&&0!==this.maxVal&&(this.inputValue=this.maxVal)),1===this.incrementDown&&(this.inputValue-=n,this.inputValue<0&&!1===this.allowNegative&&(this.inputValue=0),this.inputValue<this.minVal&&(this.inputValue=this.minVal)),this.inputValue=parseFloat(this.inputValue.toFixed(1)),this.$emit("update:value",this.inputValue)},isPressed:function(t){"up"===t?this.incrementUp=1:this.incrementDown=1,this.pressStartTime=new Date,this.updateInput(),a=setInterval(this.updateInput,250)},isReleased:function(t){"up"===t?this.incrementUp=0:this.incrementDown=0,this.pressStartTime=null,clearInterval(a)}}}},function(t,e){t.exports='\n\t<div class="input-group rop-counter-group">\n\t\t<input class="form-input rop-counter" type="text" v-model="inputValueC" :id="id">\n\t\t<button class="btn input-group-btn increment-btn up" @mousedown="isPressed(\'up\')" @mouseup="isReleased(\'up\')"><i\n\t\t\t\tclass="fa fa-fw fa-caret-up"></i></button>\n\t\t<button class="btn input-group-btn increment-btn down" @mousedown="isPressed(\'down\')"\n\t\t @mouseup="isReleased(\'down\')"><i class="fa fa-fw fa-caret-down"></i></button>\n\t</div>\n'},function(t,e){t.exports='\n <div class="tab-view" _v-e19866cc="">\n <div class="panel-body" _v-e19866cc="">\n <div class="container" :class="\'rop-tab-state-\'+is_loading" _v-e19866cc="">\n <div class="columns py-2" v-if="! isBiz" _v-e19866cc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-e19866cc="">\n <b _v-e19866cc="">{{labels.min_interval_title}}</b>\n <p class="text-gray" _v-e19866cc="">{{labels.min_interval_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-e19866cc="">\n <counter-input id="default_interval" :value.sync="generalSettings.default_interval" _v-e19866cc=""></counter-input>\n </div>\n </div>\n <span class="divider" _v-e19866cc=""></span>\n <div class="columns py-2" _v-e19866cc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-e19866cc="">\n <b _v-e19866cc="">{{labels.min_days_title}}</b>\n <p class="text-gray" _v-e19866cc="">{{labels.min_days_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-e19866cc="">\n <counter-input id="min_post_age" :max-val="365" :value.sync="generalSettings.minimum_post_age" _v-e19866cc=""></counter-input>\n </div>\n </div>\n \x3c!-- Max Post Age --\x3e\n <div class="columns py-2" _v-e19866cc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-e19866cc="">\n <b _v-e19866cc="">{{labels.max_days_title}}</b>\n <p class="text-gray" _v-e19866cc="">{{labels.max_days_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-e19866cc="">\n <counter-input id="max_post_age" :max-val="365" :value.sync="generalSettings.maximum_post_age" _v-e19866cc=""></counter-input>\n </div>\n </div>\n\n <span class="divider" _v-e19866cc=""></span>\n\n <div class="columns py-2" _v-e19866cc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-e19866cc="">\n <b _v-e19866cc="">{{labels.no_posts_title}}</b>\n <p class="text-gray" _v-e19866cc="">{{labels.no_posts_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-e19866cc="">\n <counter-input id="no_of_posts" :value.sync="generalSettings.number_of_posts" _v-e19866cc=""></counter-input>\n </div>\n </div>\n <span class="divider" _v-e19866cc=""></span>\n\n \x3c!-- Share more than once --\x3e\n <div class="columns py-2" _v-e19866cc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-e19866cc="">\n <b _v-e19866cc="">{{labels.share_once_title}}</b>\n <p class="text-gray" _v-e19866cc="">{{labels.share_once_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align text-left" _v-e19866cc="">\n <div class="form-group" _v-e19866cc="">\n <label class="form-checkbox" id="share_more_than_once" _v-e19866cc="">\n <input type="checkbox" v-model="generalSettings.more_than_once" _v-e19866cc="">\n <i class="form-icon" _v-e19866cc=""></i> {{labels.share_once_yes}}\n </label>\n </div>\n </div>\n </div>\n <span class="divider" _v-e19866cc=""></span>\n <div class="columns py-2" :class="\'rop-control-container-\'+isPro" _v-e19866cc="">\n <div class="column col-6 col-sm-12 vertical-align rop-control" _v-e19866cc="">\n <b _v-e19866cc="">{{labels.post_types_title}}</b>\n <p class="text-gray" _v-e19866cc=""><span v-html="labels.post_types_desc" _v-e19866cc=""></span></p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align text-left rop-control" _v-e19866cc="">\n <multiple-select id="rop_post_types" :options="postTypes" :disabled="isPro" :selected="generalSettings.selected_post_types" :changed-selection="updatedPostTypes" _v-e19866cc=""></multiple-select>\n\n <p class="text-primary rop-post-type-badge" v-if="checkMediaPostType " v-html="labels.post_types_attachament_info" _v-e19866cc=""></p>\n </div>\n </div>\n\n <div class="columns " v-if="!isPro" _v-e19866cc="">\n <div class="column text-center" _v-e19866cc="">\n <p class="upsell" _v-e19866cc=""><i class="fa fa-lock" _v-e19866cc=""></i> {{labels.post_types_upsell}}</p>\n </div>\n </div>\n\n\t\t\t\t<span class="divider" v-if="!isPro" _v-e19866cc=""></span>\n\n \x3c!-- Taxonomies --\x3e\n\t\t\t\t<div class="columns py-2" v-if="!isPro" _v-e19866cc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-e19866cc="">\n <b _v-e19866cc="">{{labels.taxonomies_title}}</b>\n <p class="text-gray" _v-e19866cc=""><span v-html="labels.taxonomies_desc" _v-e19866cc=""></span></p>\n </div>\n <div id="rop_taxonomies" class="column col-6 col-sm-12 vertical-align text-left" _v-e19866cc="">\n <div class="input-group" _v-e19866cc="">\n <multiple-select :options="taxonomies" :selected="generalSettings.selected_taxonomies" :changed-selection="updatedTaxonomies" :is_pro_version="isPro" :apply_limit="isTaxLimit" v-on:display-limiter-notice="displayProMessage" _v-e19866cc=""></multiple-select>\n <span class="input-group-addon vertical-align" _v-e19866cc="">\n\t\t\t\t\t\t\t\t<label class="form-checkbox" _v-e19866cc="">\n\t\t\t\t\t\t\t\t\t<input type="checkbox" v-model="generalSettings.exclude_taxonomies" _v-e19866cc="">\n\t\t\t\t\t\t\t\t\t<i class="form-icon" _v-e19866cc=""></i>{{labels.taxonomies_exclude}}\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t</span>\n </div>\n <p class="text-primary rop-post-type-badge" v-if="is_taxonomy_message" v-html="labels.post_types_taxonomy_limit" _v-e19866cc=""></p>\n </div>\n </div>\n\n <span class="divider" _v-e19866cc=""></span>\n\n \x3c!-- Google Analytics --\x3e\n <div class="columns py-2" _v-e19866cc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-e19866cc="">\n <b _v-e19866cc="">{{labels.ga_title}}</b>\n <p class="text-gray" _v-e19866cc="">{{labels.ga_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align text-left" _v-e19866cc="">\n <div class="form-group" _v-e19866cc="">\n <label class="form-checkbox" _v-e19866cc="">\n <input type="checkbox" v-model="generalSettings.ga_tracking" _v-e19866cc="">\n <i class="form-icon" _v-e19866cc=""></i>{{labels.ga_yes}}\n </label>\n </div>\n </div>\n </div>\n\n <span class="divider" _v-e19866cc=""></span>\n\n <div class="columns py-2" _v-e19866cc="">\n <div class="column col-6 col-sm-12 vertical-align rop-control" _v-e19866cc="">\n <b _v-e19866cc="">{{labels.instant_share_title}}</b>\n <p class="text-gray" _v-e19866cc=""><span v-html="labels.instant_share_desc" _v-e19866cc=""></span></p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align text-left rop-control" _v-e19866cc="">\n <div class="form-group" _v-e19866cc="">\n <label id="rop_instant_share" class="form-checkbox" _v-e19866cc="">\n <input type="checkbox" v-model="generalSettings.instant_share" _v-e19866cc="">\n <i class="form-icon" _v-e19866cc=""></i>{{labels.instant_share_yes}}\n </label>\n </div>\n </div>\n </div>\n\n <span class="divider" _v-e19866cc=""></span>\n\n <div class="columns py-2" v-if="isInstantShare" _v-e19866cc="">\n <div class="column col-6 col-sm-12 vertical-align rop-control" _v-e19866cc="">\n <b _v-e19866cc="">{{labels.true_instant_share_title}}</b>\n <p class="text-gray" _v-e19866cc=""><span v-html="labels.true_instant_share_desc" _v-e19866cc=""></span></p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align text-left rop-control" _v-e19866cc="">\n <div class="form-group" _v-e19866cc="">\n <label class="form-checkbox" _v-e19866cc="">\n <input type="checkbox" v-model="generalSettings.true_instant_share" _v-e19866cc="">\n <i class="form-icon" _v-e19866cc=""></i>{{labels.true_instant_share_yes}}\n </label>\n </div>\n </div>\n </div>\n\n <span class="divider" v-if="isInstantShare" _v-e19866cc=""></span>\n\n <div class="columns py-2" v-if="isInstantShare" _v-e19866cc="">\n <div class="column col-6 col-sm-12 vertical-align rop-control" _v-e19866cc="">\n <b _v-e19866cc="">{{labels.instant_share_default_title}}</b>\n <p class="text-gray" _v-e19866cc="">{{labels.instant_share_default_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align text-left rop-control" _v-e19866cc="">\n <div class="form-group" _v-e19866cc="">\n <label class="form-checkbox" _v-e19866cc="">\n <input type="checkbox" v-model="generalSettings.instant_share_default" _v-e19866cc="">\n <i class="form-icon" _v-e19866cc=""></i>{{labels.instant_share_default_yes}}\n </label>\n </div>\n </div>\n </div>\n\n <span class="divider" v-if="isInstantShare" _v-e19866cc=""></span>\n\n <div class="columns py-2" v-if="isInstantShare" :class="\'rop-control-container-\'+isPro" _v-e19866cc="">\n <div class="column col-6 col-sm-12 vertical-align rop-control" _v-e19866cc="">\n <b _v-e19866cc="">{{labels.instant_share_future_scheduled_title}}</b>\n <p class="text-gray" _v-e19866cc=""><span v-html="labels.instant_share_future_scheduled_desc" _v-e19866cc=""></span></p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align text-left rop-control" _v-e19866cc="">\n <div class="form-group" _v-e19866cc="">\n <label class="form-checkbox" _v-e19866cc="">\n <input type="checkbox" v-model="generalSettings.instant_share_future_scheduled" _v-e19866cc="">\n <i class="form-icon" _v-e19866cc=""></i>{{labels.instant_share_future_scheduled_yes}}\n </label>\n </div>\n </div>\n </div>\n \x3c!-- Upsell --\x3e\n <div class="columns " v-if="!isPro && isInstantShare" _v-e19866cc="">\n <div class="column text-center" _v-e19866cc="">\n <p class="upsell" _v-e19866cc=""><i class="fa fa-lock" _v-e19866cc=""></i> {{labels.instant_share_future_scheduled_upsell}}</p>\n </div>\n </div>\n <span class="divider" v-if="isInstantShare" _v-e19866cc=""></span>\n\n <div class="columns py-2" :class="\'rop-control-container-\'+isPro" _v-e19866cc="">\n <div class="column col-6 col-sm-12 vertical-align rop-control" _v-e19866cc="">\n <b _v-e19866cc="">{{labels.custom_share_title}}</b>\n <p class="text-gray" _v-e19866cc=""><span v-html="labels.custom_share_desc" _v-e19866cc=""></span></p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align text-left rop-control" _v-e19866cc="">\n <div class="form-group" _v-e19866cc="">\n <label id="rop_custom_share_msg" class="form-checkbox" _v-e19866cc="">\n <input type="checkbox" :disabled="!isPro" v-model="generalSettings.custom_messages" _v-e19866cc="">\n <i class="form-icon" _v-e19866cc=""></i>{{labels.custom_share_yes}}\n </label>\n </div>\n </div>\n </div>\n <span class="divider" _v-e19866cc=""></span>\n\n\n <div class="columns py-2" :class="\'rop-control-container-\'+isPro" v-if="isCustomMsgs" _v-e19866cc="">\n <div class="column col-6 col-sm-12 vertical-align rop-control" _v-e19866cc="">\n <b _v-e19866cc="">{{labels.custom_share_order_title}}</b>\n <p class="text-gray" _v-e19866cc="">{{labels.custom_share_order_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align text-left rop-control" _v-e19866cc="">\n <div class="form-group" _v-e19866cc="">\n <label id="rop_custom_share_msg" class="form-checkbox" _v-e19866cc="">\n <input type="checkbox" :disabled="!isPro" v-model="generalSettings.custom_messages_share_order" _v-e19866cc="">\n <i class="form-icon" _v-e19866cc=""></i>{{labels.custom_share_order_yes}}\n </label>\n </div>\n </div>\n </div>\n\n \x3c!-- Upsell --\x3e\n <div class="columns " v-if="!isPro" _v-e19866cc="">\n <div class="column text-center" _v-e19866cc="">\n <p class="upsell" _v-e19866cc=""><i class="fa fa-lock" _v-e19866cc=""></i> {{labels.custom_share_upsell}}</p>\n </div>\n </div>\n <span class="divider" v-if="isCustomMsgs" _v-e19866cc=""></span>\n\n <div class="columns py-2" _v-e19866cc="">\n <div class="column col-6 col-sm-12 vertical-align rop-control" _v-e19866cc="">\n <b _v-e19866cc="">{{labels.housekeeping}}</b>\n <p class="text-gray" _v-e19866cc="">{{labels.housekeeping_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align text-left rop-control" _v-e19866cc="">\n <div class="form-group" _v-e19866cc="">\n <label class="form-checkbox" _v-e19866cc="">\n <input type="checkbox" v-model="generalSettings.housekeeping" _v-e19866cc="">\n <i class="form-icon" _v-e19866cc=""></i>{{labels.housekeeping_yes}}\n </label>\n </div>\n </div>\n </div>\n <span class="divider" _v-e19866cc=""></span>\n\n </div>\n </div>\n <div class="panel-footer text-right" _v-e19866cc="">\n <button class="btn btn-primary" @click="saveGeneralSettings()" _v-e19866cc=""><i class="fa fa-check" v-if="!this.is_loading" _v-e19866cc=""></i> <i class="fa fa-spinner fa-spin" v-else="" _v-e19866cc=""></i> {{labels.save}}\n </button>\n </div>\n </div>\n'},function(t,e,n){var a,s;n(258),a=n(260),s=n(285),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(259);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n\t.icon_box[_v-6ded7d15] {\n\t\twidth: 30px;\n\t\theight: 30px;\n\t\tpadding: 5px;\n\t}\n\n\t.icon_box.no-image[_v-6ded7d15] {\n\t\tpadding: 0;\n\t}\n\n\t.icon_box.has_image > .fa[_v-6ded7d15] {\n\t\twidth: 15px;\n\t\theight: 15px;\n\t\tpadding: 0;\n\t\tline-height: 15px;\n\t}\n\n\t.icon_box.no-image > .fa[_v-6ded7d15] {\n\t\tfont-size: 20px;\n\t\tbackground: transparent;\n\t\tline-height: 30px;\n\t}\n",""])},function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{default:t}}var s=n(18),i=a(s),r=n(261),o=a(r),d=n(264),l=a(d),u=n(269),c=a(u),_=n(52),m=a(_);t.exports={name:"account-selector-view",props:{type:{default:function(){return""},type:String}},data:function(){var t=null;return void 0!==(0,i.default)(this.$store.state.activeAccounts)[0]&&(t=(0,i.default)(this.$store.state.activeAccounts)[0]),{selected_account:t,component_label:"",allow_footer:!0,license:this.$store.state.licence,action:"",labels:this.$store.state.labels.accounts,upsell_link:ropApiSettings.upsell_link,is_loading:!1}},mounted:function(){this.setupData()},filters:{capitalize:function(t){return t?(t=t.toString(),t.charAt(0).toUpperCase()+t.slice(1)):""}},computed:{active_data:function(){return"post-format"===this.type?this.$store.state.activePostFormat:"schedule"===this.type?this.$store.state.activeSchedule:[]},accountsCount:function(){return(0,i.default)(this.$store.state.activeAccounts).length},active_accounts:{get:function(){var t=this.$store.state.activeAccounts,e={};for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return this.$log.info("Available accounts",e),e},set:function(t){this.setupData()}},active_account_name:function(){return this.active_accounts[this.selected_account].user}},watch:{type:function(){this.setupData()}},methods:{setupData:function(){var t=this.type.replace("-","_"),e="";"post-format"===this.type&&(e="post format",this.allow_footer=!0),"schedule"===this.type&&(e="schedule",this.allow_footer=this.license>1),this.action=t,this.component_label=e,this.checkActiveData()},getAccountData:function(){var t=this;if(this.is_loading)return void this.$log.warn("Request in progress...Bail");void 0!==this.active_accounts[this.selected_account]&&(this.is_loading=!0,this.$store.dispatch("fetchAJAXPromise",{req:"get_"+this.action,data:{}}).then(function(e){t.$log.info("Successfully fetched account data",t.type,t.selected_account),t.is_loading=!1},function(e){Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",e),t.is_loading=!1}))},saveAccountData:function(){var t=this;if(this.is_loading)return void this.$log.warn("Request in progress...Bail");this.is_loading=!0,this.$store.dispatch("fetchAJAXPromise",{req:"save_"+this.action,data:{service:this.active_accounts[this.selected_account].service,account_id:this.selected_account,data:this.active_data[this.selected_account]}}).then(function(e){t.is_loading=!1},function(e){t.is_loading=!1,Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",e)})},getIcon:function(t){var e="fa-";return"facebook"===t.service&&(e=e.concat("facebook")),"twitter"===t.service&&(e=e.concat("twitter")),"linkedin"===t.service&&(e=e.concat("linkedin")),"tumblr"===t.service&&(e=e.concat("tumblr")),"pinterest"===t.service&&(e=e.concat("pinterest")),e},resetAccountData:function(){var t=this;if(this.is_loading)return void this.$log.warn("Request in progress...Bail");this.is_loading=!0,this.$store.dispatch("fetchAJAXPromise",{req:"reset_"+this.action,data:{service:this.active_accounts[this.selected_account].service,account_id:this.selected_account}}).then(function(e){t.is_loading=!1,t.$log.info("Succesfully reseted account",t.type)},function(e){t.is_loading=!1,Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",e)}),this.$forceUpdate()},checkActiveData:function(){void 0===this.active_data[this.selected_account]&&this.getAccountData()},setActiveAccount:function(t){return this.is_loading?void this.$log.warn("Request in progress...Bail"):this.selected_account===t?void this.$log.info("Account already active"):(this.$log.info("Switched account data ",this.type,t),this.selected_account=t,void this.checkActiveData())}},components:{"empty-active-accounts":o.default,"post-format":l.default,schedule:c.default,MultipleSelect:m.default}}},function(t,e,n){var a,s;a=n(262),s=n(263),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){"use strict";t.exports={name:"empty-active-accounts",data:function(){return{labels:this.$store.state.labels.accounts,upsell_link:ropApiSettings.upsell_link}},methods:{goToAccounts:function(){this.$store.commit("setTabView","accounts")}}}},function(t,e){t.exports='\n\t<div class="empty">\n\t\t<div class="empty-icon">\n\t\t\t<i class="fa fa-3x fa-user-circle-o"></i>\n\t\t</div>\n\t\t<p class="empty-title h5">{{labels.no_active_accounts}}</p>\n\t\t<p class="empty-subtitle" v-html="labels.no_active_accounts_desc"></p>\n\t\t<button class="btn btn-primary" @click="goToAccounts()">{{labels.go_to_accounts_btn}}</button>\n\t</div>\n'},function(t,e,n){var a,s;n(265),a=n(267),s=n(268),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(266);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n #rop_core .panel-body .text-gray[_v-2ea0dffc] {\n margin: 0;\n line-height: normal;\n }\n\n b[_v-2ea0dffc] {\n margin-bottom: 5px;\n display: block;\n }\n\n #rop_core .input-group .input-group-addon[_v-2ea0dffc] {\n padding: 3px 5px;\n }\n\n @media ( max-width: 600px ) {\n #rop_core .panel-body .text-gray[_v-2ea0dffc] {\n margin-bottom: 10px;\n }\n\n #rop_core .text-right[_v-2ea0dffc] {\n text-align: left;\n }\n }\n",""])},function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{default:t}}var s=n(49),i=a(s),r=n(52),o=a(r);t.exports={name:"post-format",props:["account_id","license"],data:function(){return{labels:this.$store.state.labels.post_format,labels_settings:this.$store.state.labels.settings,upsell_link:ropApiSettings.upsell_link,selected_tax_filter:[]}},created:function(){this.get_taxonomy_list()},methods:{get_taxonomy_list:function(){var t=this;0===this.$store.state.generalSettings.length&&(this.is_loading=!0,this.$log.info("Fetching general settings."),this.$store.dispatch("fetchAJAXPromise",{req:"get_general_settings"}).then(function(e){t.is_loading=!1,t.$log.debug("Succesfully fetched.")},function(e){t.is_loading=!1,t.$log.error("Can not fetch the general settings.")}))},updated_tax_filter:function(t){var e=[];for(var n in t)e.push(t[n].value);var a=[],s=!0,r=!1,o=void 0;try{for(var d,l=(0,i.default)(this.taxonomy);!(s=(d=l.next()).done);s=!0){var u=d.value,c=!0,_=!1,m=void 0;try{for(var f,p=(0,i.default)(e);!(c=(f=p.next()).done);c=!0){var h=f.value;h=parseInt(h);parseInt(u.value)===h&&a.push(u)}}catch(t){_=!0,m=t}finally{try{!c&&p.return&&p.return()}finally{if(_)throw m}}}}catch(t){r=!0,o=t}finally{try{!s&&l.return&&l.return()}finally{if(r)throw o}}this.post_format.taxonomy_filter=a}},computed:{post_format:function(){return this.$store.state.activePostFormat[this.account_id]?this.$store.state.activePostFormat[this.account_id]:[]},isPro:function(){return this.license>0},short_url_service:function(){var t=this.$store.state.activePostFormat[this.account_id]?this.$store.state.activePostFormat[this.account_id]:[];return t.short_url_service?t.short_url_service:""},taxonomy_filter:function(){var t=this.$store.state.activePostFormat[this.account_id]?this.$store.state.activePostFormat[this.account_id]:[];if(t.taxonomy_filter){var e=0,n=!0,a=!1,s=void 0;try{for(var r,o=(0,i.default)(t.taxonomy_filter);!(n=(r=o.next()).done);n=!0){r.value;t.taxonomy_filter[e].selected=!0,e++}}catch(t){a=!0,s=t}finally{try{!n&&o.return&&o.return()}finally{if(a)throw s}}}return t.taxonomy_filter?t.taxonomy_filter:[]},taxonomy:function(){return this.$store.state.generalSettings.available_taxonomies}},watch:{short_url_service:function(){var t=this;this.$store.dispatch("fetchAJAXPromise",{req:"get_shortner_credentials",data:{short_url_service:this.short_url_service}}).then(function(e){t.post_format.shortner_credentials=e},function(t){Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t)})}},filters:{capitalize:function(t){if(!t)return"";t=t.toString().split("_");for(var e="",n=0;n<t.length;n++)e+=t[n].charAt(0).toUpperCase()+t[n].slice(1)+" ";return e}},components:{MultipleSelect:o.default}}},function(t,e){t.exports='\n <div _v-2ea0dffc="">\n <div class="columns py-2" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.post_content_title}}</b>\n <p class="text-gray" _v-2ea0dffc="">{{labels.post_content_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="form-group" _v-2ea0dffc="">\n <select class="form-select" v-model="post_format.post_content" _v-2ea0dffc="">\n <option value="post_title" _v-2ea0dffc="">{{labels.post_content_option_title}}</option>\n <option value="post_content" _v-2ea0dffc="">{{labels.post_content_option_content}}</option>\n <option value="post_title_content" _v-2ea0dffc="">{{labels.post_content_option_title_content}}</option>\n <option value="custom_field" _v-2ea0dffc="">{{labels.post_content_option_custom_field}}</option>\n </select>\n </div>\n </div>\n </div>\n\n <div class="columns py-2" v-if="post_format.post_content === \'custom_field\'" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.custom_meta_title}}</b>\n <p class="text-gray" _v-2ea0dffc="">{{labels.custom_meta_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="form-group" _v-2ea0dffc="">\n <input class="form-input" type="text" v-model="post_format.custom_meta_field" value="" placeholder="" _v-2ea0dffc="">\n </div>\n </div>\n </div>\n\n <span class="divider" _v-2ea0dffc=""></span>\n\n <div class="columns py-2" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.max_char_title}}</b>\n <p class="text-gray" _v-2ea0dffc="">{{labels.max_char_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="form-group" _v-2ea0dffc="">\n <input class="form-input" type="number" v-model="post_format.maximum_length" value="" placeholder="" _v-2ea0dffc="">\n </div>\n </div>\n </div>\n <span class="divider" _v-2ea0dffc=""></span>\n\n <div class="columns py-2" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.add_char_title}}</b>\n <p class="text-gray" _v-2ea0dffc=""><span v-html="labels.add_char_desc" _v-2ea0dffc=""></span></p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="form-group" _v-2ea0dffc="">\n\t\t\t\t\t<textarea class="form-input" v-model="post_format.custom_text" v-bind:placeholder="labels.add_char_placeholder" _v-2ea0dffc="">{{post_format.custom_text}}</textarea>\n </div>\n </div>\n </div>\n\n <div class="columns py-2" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <p class="text-gray" _v-2ea0dffc="">{{labels.add_pos_title}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="form-group" _v-2ea0dffc="">\n <select class="form-select" v-model="post_format.custom_text_pos" _v-2ea0dffc="">\n <option value="beginning" _v-2ea0dffc="">{{labels.add_pos_option_start}}</option>\n <option value="end" _v-2ea0dffc="">{{labels.add_pos_option_end}}</option>\n </select>\n </div>\n </div>\n </div>\n <span class="divider" _v-2ea0dffc=""></span>\n <div class="columns py-2" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.add_link_title}}</b>\n <p class="text-gray" _v-2ea0dffc="">{{labels.add_link_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="input-group" _v-2ea0dffc="">\n <label class="form-checkbox" _v-2ea0dffc="">\n <input type="checkbox" v-model="post_format.include_link" _v-2ea0dffc="">\n <i class="form-icon" _v-2ea0dffc=""></i> {{labels.add_link_yes}}\n </label>\n </div>\n </div>\n </div>\n <span class="divider" _v-2ea0dffc=""></span>\n <div class="columns py-2" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.meta_link_title}}</b>\n <p class="text-gray" _v-2ea0dffc="">{{labels.meta_link_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="input-group" _v-2ea0dffc="">\n <label class="form-checkbox" _v-2ea0dffc="">\n <input type="checkbox" v-model="post_format.url_from_meta" _v-2ea0dffc="">\n <i class="form-icon" _v-2ea0dffc=""></i> {{labels.meta_link_yes}}\n </label>\n </div>\n </div>\n </div>\n\n \x3c!-- Custom Field --\x3e\n <div class="columns py-2" v-if="post_format.url_from_meta" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.meta_link_name_title}}</b>\n <p class="text-gray" _v-2ea0dffc="">{{labels.meta_link_name_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="form-group" _v-2ea0dffc="">\n <input class="form-input" type="text" v-model="post_format.url_meta_key" value="" placeholder="" _v-2ea0dffc="">\n </div>\n </div>\n </div>\n <span class="divider" _v-2ea0dffc=""></span>\n\n <div class="columns py-2" :class="\'rop-control-container-\'+isPro" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align rop-control" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels_settings.taxonomies_title}}</b>\n <p class="text-gray" _v-2ea0dffc=""><span v-html="labels_settings.taxonomies_desc" _v-2ea0dffc=""></span></p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="input-group" _v-2ea0dffc="">\n <multiple-select :disabled="!!isPro" :options="taxonomy" :selected="taxonomy_filter" :name="post_format.taxonomy_filter" :changed-selection="updated_tax_filter" :key="this.account_id" _v-2ea0dffc=""></multiple-select>\n <span class="input-group-addon vertical-align" _v-2ea0dffc="">\n <label class="form-checkbox" _v-2ea0dffc="">\n\t\t\t\t\t\t <input :disabled="!isPro" type="checkbox" v-model="post_format.exclude_taxonomies" _v-2ea0dffc="">\n\t\t\t\t\t\t\t<i class="form-icon" _v-2ea0dffc=""></i>{{labels_settings.taxonomies_exclude}}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</span>\n </div>\n </div>\n </div>\n <div class="columns " v-if="!isPro" _v-2ea0dffc="">\n <div class="column text-center" _v-2ea0dffc="">\n <p class="upsell" _v-2ea0dffc=""><i class="fa fa-lock" _v-2ea0dffc=""></i> {{labels.taxonomy_based_sharing_upsell}}</p>\n </div>\n </div>\n <span class="divider" _v-2ea0dffc=""></span>\n <div class="columns py-2" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.use_shortner_title}}</b>\n <p class="text-gray" _v-2ea0dffc="">{{labels.use_shortner_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="input-group" _v-2ea0dffc="">\n <label class="form-checkbox" _v-2ea0dffc="">\n <input type="checkbox" v-model="post_format.short_url" _v-2ea0dffc="">\n <i class="form-icon" _v-2ea0dffc=""></i> {{labels.use_shortner_yes}}\n </label>\n </div>\n </div>\n </div>\n <div class="columns py-2" v-if="post_format.short_url" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.shortner_title}}</b>\n <p class="text-gray" _v-2ea0dffc="">{{labels.shortner_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="form-group" _v-2ea0dffc="">\n <select class="form-select" v-model="post_format.short_url_service" _v-2ea0dffc="">\n \x3c!-- rviv.ly currently blacklisted --\x3e\n \x3c!-- <option value="rviv.ly">rviv.ly</option> --\x3e\n <option value="bit.ly" _v-2ea0dffc="">bit.ly</option>\n <option value="firebase" _v-2ea0dffc="">google firebase</option>\n <option value="ow.ly" _v-2ea0dffc="">ow.ly</option>\n <option value="is.gd" _v-2ea0dffc="">is.gd</option>\n <option value="rebrand.ly" _v-2ea0dffc="">rebrand.ly</option>\n <option value="wp_short_url" _v-2ea0dffc="">wp_short_url</option>\n </select>\n </div>\n </div>\n </div>\n\n <div class="columns py-2" v-if="post_format.short_url" v-for="( credential, key_name ) in post_format.shortner_credentials" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{ key_name | capitalize }}</b>\n <p class="text-gray" _v-2ea0dffc="">{{labels.shortner_field_desc_start}} "{{key_name}}"\n {{labels.shortner_field_desc_end}}\n <strong _v-2ea0dffc="">{{post_format.short_url_service}}</strong> {{labels.shortner_api_field}}.</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="form-group" _v-2ea0dffc="">\n <input class="form-input" type="text" v-model="post_format.shortner_credentials[key_name]" _v-2ea0dffc="">\n </div>\n </div>\n </div>\n\n <div class="columns py-2" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.hashtags_title}}</b>\n <p class="text-gray" _v-2ea0dffc="">{{labels.hashtags_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="form-group" _v-2ea0dffc="">\n <select class="form-select" v-model="post_format.hashtags" _v-2ea0dffc="">\n <option value="no-hashtags" _v-2ea0dffc="">{{labels.hashtags_option_no}}</option>\n <option value="common-hashtags" _v-2ea0dffc="">{{labels.hashtags_option_common}}</option>\n <option value="categories-hashtags" _v-2ea0dffc="">{{labels.hashtags_option_cats}}</option>\n <option value="tags-hashtags" _v-2ea0dffc="">{{labels.hashtags_option_tags}}</option>\n <option value="custom-hashtags" _v-2ea0dffc="">{{labels.hashtags_option_field}}</option>\n </select>\n </div>\n </div>\n </div>\n <div class="columns py-2" v-if="post_format.hashtags === \'common-hashtags\'" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.hastags_common_title}}</b>\n <p class="text-gray" _v-2ea0dffc="">{{labels.hastags_common_desc}} ",".</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="form-group" _v-2ea0dffc="">\n <input class="form-input" type="text" v-model="post_format.hashtags_common" value="" placeholder="" _v-2ea0dffc="">\n </div>\n </div>\n </div>\n\n <div class="columns py-2" v-if="post_format.hashtags === \'custom-hashtags\'" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.hastags_field_title}}</b>\n <p class="text-gray" _v-2ea0dffc="">{{labels.hastags_field_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="form-group" _v-2ea0dffc="">\n <input class="form-input" type="text" v-model="post_format.hashtags_custom" value="" placeholder="" _v-2ea0dffc="">\n </div>\n </div>\n </div>\n\n <div class="columns py-2" v-if="post_format.hashtags !== \'no-hashtags\'" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.hashtags_length_title}}</b>\n <p class="text-gray" _v-2ea0dffc="">{{labels.hashtags_length_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="form-group" _v-2ea0dffc="">\n <input class="form-input" type="number" v-model="post_format.hashtags_length" value="" placeholder="" _v-2ea0dffc="">\n </div>\n </div>\n </div>\n\n <span class="divider" _v-2ea0dffc=""></span>\n\n <div class="columns py-2" :class="\'rop-control-container-\'+isPro" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align rop-control" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.image_title}}</b>\n <p class="text-gray" _v-2ea0dffc=""><span v-html="labels.image_desc" _v-2ea0dffc=""></span></p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align" _v-2ea0dffc="">\n <div class="input-group" _v-2ea0dffc="">\n <label class="form-checkbox" _v-2ea0dffc="">\n <input type="checkbox" v-model="post_format.image" :disabled="!isPro" _v-2ea0dffc="">\n <i class="form-icon" _v-2ea0dffc=""></i> {{labels.image_yes}}\n </label>\n </div>\n </div>\n </div>\n\n <div class="columns " v-if="!isPro" _v-2ea0dffc="">\n <div class="column text-center" _v-2ea0dffc="">\n <p class="upsell" _v-2ea0dffc=""><i class="fa fa-lock" _v-2ea0dffc=""></i> {{labels.image_upsell}}</p>\n </div>\n </div>\n <span class="divider" _v-2ea0dffc=""></span>\n \x3c!-- Google Analytics --\x3e\n <div class="columns py-2" :class="\'rop-control-container-\'+isPro" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align rop-control" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.utm_campaign_medium}}</b>\n <p class="text-gray" _v-2ea0dffc="">{{labels.utm_campaign_medium_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align text-left rop-control" _v-2ea0dffc="">\n <div class="form-group" _v-2ea0dffc="">\n <input type="text" :disabled="!isPro" class="form-input" v-model="post_format.utm_campaign_medium" placeholder="social" _v-2ea0dffc="">\n </div>\n </div>\n </div>\n\n <div class="columns py-2" :class="\'rop-control-container-\'+isPro" _v-2ea0dffc="">\n <div class="column col-6 col-sm-12 vertical-align rop-control" _v-2ea0dffc="">\n <b _v-2ea0dffc="">{{labels.utm_campaign_name}}</b>\n <p class="text-gray" _v-2ea0dffc="">{{labels.utm_campaign_name_desc}}</p>\n </div>\n <div class="column col-6 col-sm-12 vertical-align text-left rop-control" _v-2ea0dffc="">\n <div class="form-group" _v-2ea0dffc="">\n <input type="text" :disabled="!isPro" class="form-input" v-model="post_format.utm_campaign_name" placeholder="ReviveOldPost" _v-2ea0dffc="">\n </div>\n </div>\n </div>\n <div class="columns " v-if="!isPro" _v-2ea0dffc="">\n <div class="column text-center" _v-2ea0dffc="">\n <p class="upsell" _v-2ea0dffc=""><i class="fa fa-lock" _v-2ea0dffc=""></i> {{labels.custom_utm_upsell}}</p>\n </div>\n </div>\n <span class="divider" _v-2ea0dffc=""></span>\n </div>\n'},function(t,e,n){var a,s;n(270),a=n(272),s=n(284),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(271);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n\t.rop-control-container-false[_v-07e2d0a2] {\n\t\tcursor:not-allowed !important;\n\t}\n\t#rop_core .panel-body .text-gray[_v-07e2d0a2] {\n\t\tmargin: 0;\n\t\tline-height: normal;\n\t}\n\n\tb[_v-07e2d0a2] {\n\t\tmargin-bottom: 5px;\n\t\tdisplay: block;\n\t}\n\n\t#rop_core .input-group .input-group-addon[_v-07e2d0a2] {\n\t\tpadding: 3px 5px;\n\t}\n\n\t.time-picker[_v-07e2d0a2] {\n\t\tmargin-bottom: 10px;\n\t}\n\n\t@media ( max-width: 600px ) {\n\t\t#rop_core .panel-body .text-gray[_v-07e2d0a2] {\n\t\t\tmargin-bottom: 10px;\n\t\t}\n\n\t\t#rop_core .text-right[_v-07e2d0a2] {\n\t\t\ttext-align: left;\n\t\t}\n\t}\n\n",""])},function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{default:t}}var s=n(75),i=a(s),r=n(273),o=a(r),d=n(86),l=a(d),u=n(0),c=a(u);t.exports={name:"account-schedule",props:["account_id","license"],data:function(){return{days:{Mon:{value:"1",checked:!1},Tue:{value:"2",checked:!1},Wed:{value:"3",checked:!1},Thu:{value:"4",checked:!1},Fri:{value:"5",checked:!1},Sat:{value:"6",checked:!1},Sun:{value:"7",checked:!1}},labels:this.$store.state.labels.schedule,upsell_link:ropApiSettings.upsell_link}},computed:{schedule:function(){return this.$store.state.activeSchedule[this.account_id]?this.$store.state.activeSchedule[this.account_id]:[]},daysObject:function(){var t=this.days;for(var e in t)t[e].checked=this.isChecked(t[e].value);return t},formatedDate:function(){return void 0===this.date_format?"":c.default.utc(this.current_time,"X").format(this.date_format.replace("mm","mm:ss"))},current_time:{get:function(){return this.$store.state.cron_status.current_time},set:function(t){this.$store.state.cron_status.current_time=t}},date_format:function(){return this.$store.state.cron_status.date_format}},methods:{isChecked:function(t){return void 0!==this.schedule.interval_f&&this.schedule.interval_f.week_days.indexOf(t)>-1},getTime:function(t){var e=this.schedule.interval_f.time[t],n=e.split(":");return{HH:n[0],mm:n[1]}},syncTime:function(t,e){void 0!==this.schedule.interval_f.time[e]&&(this.schedule.interval_f.time[e]=t.data.HH+":"+t.data.mm)},addTime:function(){this.schedule.interval_f.time.push("00:00")},rmvTime:function(t){this.schedule.interval_f.time.splice(t,1)},addDay:function(t){this.schedule.interval_f.week_days.push(t)},rmvDay:function(t){var e=this.schedule.interval_f.week_days.indexOf(t);e>-1&&this.schedule.interval_f.week_days.splice(e,1)}},components:{ButtonCheckbox:i.default,CounterInput:l.default,VueTimepicker:o.default}}},function(t,e,n){t.exports=n(274)},function(t,e,n){var a,s;n(275),a=n(278),s=n(281),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(276);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.i(n(277),""),e.push([t.i,"\n",""])},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,".time-picker {\n display: inline-block;\n position: relative;\n font-size: 1em;\n width: 10em;\n font-family: sans-serif;\n vertical-align: middle;\n}\n\n.time-picker * {\n box-sizing: border-box;\n}\n\n.time-picker input.display-time {\n border: 1px solid #d2d2d2;\n width: 10em;\n height: 2.2em;\n padding: 0.3em 0.5em;\n font-size: 1em;\n}\n\n.time-picker .clear-btn {\n position: absolute;\n display: flex;\n flex-flow: column nowrap;\n justify-content: center;\n align-items: center;\n top: 0;\n right: 0;\n bottom: 0;\n margin-top: -0.15em;\n z-index: 3;\n font-size: 1.1em;\n line-height: 1em;\n vertical-align: middle;\n width: 1.3em;\n color: #d2d2d2;\n background: rgba(255,255,255,0);\n text-align: center;\n font-style: normal;\n\n -webkit-transition: color .2s;\n transition: color .2s;\n}\n\n.time-picker .clear-btn:hover {\n color: #797979;\n cursor: pointer;\n}\n\n.time-picker .time-picker-overlay {\n z-index: 2;\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n}\n\n.time-picker .dropdown {\n position: absolute;\n z-index: 5;\n top: calc(2.2em + 2px);\n left: 0;\n background: #fff;\n box-shadow: 0 1px 6px rgba(0,0,0,0.15);\n width: 10em;\n height: 10em;\n font-weight: normal;\n}\n\n.time-picker .dropdown .select-list {\n width: 10em;\n height: 10em;\n overflow: hidden;\n display: flex;\n flex-flow: row nowrap;\n align-items: stretch;\n justify-content: space-between;\n}\n\n.time-picker .dropdown ul {\n padding: 0;\n margin: 0;\n list-style: none;\n\n flex: 1;\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.time-picker .dropdown ul.minutes,\n.time-picker .dropdown ul.seconds,\n.time-picker .dropdown ul.apms{\n border-left: 1px solid #fff;\n}\n\n.time-picker .dropdown ul li {\n text-align: center;\n padding: 0.3em 0;\n color: #161616;\n}\n\n.time-picker .dropdown ul li:not(.hint):hover {\n background: rgba(0,0,0,.08);\n color: #161616;\n cursor: pointer;\n}\n\n.time-picker .dropdown ul li.active,\n.time-picker .dropdown ul li.active:hover {\n background: #41B883;\n color: #fff;\n}\n\n.time-picker .dropdown .hint {\n color: #a5a5a5;\n cursor: default;\n font-size: 0.8em;\n}\n",""])},function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var s=n(18),i=a(s),r=n(279),o=a(r),d={HOUR_TOKENS:["HH","H","hh","h","kk","k"],MINUTE_TOKENS:["mm","m"],SECOND_TOKENS:["ss","s"],APM_TOKENS:["A","a"]};e.default={name:"VueTimepicker",props:{value:{type:Object},hideClearButton:{type:Boolean},format:{type:String},minuteInterval:{type:Number},secondInterval:{type:Number},id:{type:String}},data:function(){return{hours:[],minutes:[],seconds:[],apms:[],showDropdown:!1,muteWatch:!1,hourType:"HH",minuteType:"mm",secondType:"",apmType:"",hour:"",minute:"",second:"",apm:"",fullValues:void 0}},computed:{displayTime:function(){var t=String(this.format||"HH:mm");return this.hour&&(t=t.replace(new RegExp(this.hourType,"g"),this.hour)),this.minute&&(t=t.replace(new RegExp(this.minuteType,"g"),this.minute)),this.second&&this.secondType&&(t=t.replace(new RegExp(this.secondType,"g"),this.second)),this.apm&&this.apmType&&(t=t.replace(new RegExp(this.apmType,"g"),this.apm)),t},showClearBtn:function(){return!!(this.hour&&""!==this.hour||this.minute&&""!==this.minute)}},watch:{format:"renderFormat",minuteInterval:function(t){this.renderList("minute",t)},secondInterval:function(t){this.renderList("second",t)},value:"readValues",displayTime:"fillValues"},methods:{formatValue:function(t,e){switch(t){case"H":case"m":case"s":return String(e);case"HH":case"mm":case"ss":return e<10?"0"+e:String(e);case"h":case"k":return String(e+1);case"hh":case"kk":return e+1<10?"0"+(e+1):String(e+1);default:return""}},checkAcceptingType:function(t,e,n){if(!t||!e||!e.length)return"";for(var a=0;a<t.length;a++)if(e.indexOf(t[a])>-1)return t[a];return n||""},renderFormat:function(t){t=t||this.format,t&&t.length||(t="HH:mm"),this.hourType=this.checkAcceptingType(d.HOUR_TOKENS,t,"HH"),this.minuteType=this.checkAcceptingType(d.MINUTE_TOKENS,t,"mm"),this.secondType=this.checkAcceptingType(d.SECOND_TOKENS,t),this.apmType=this.checkAcceptingType(d.APM_TOKENS,t),this.renderHoursList(),this.renderList("minute"),this.secondType&&this.renderList("second"),this.apmType&&this.renderApmList();var e=this;this.$nextTick(function(){e.readValues()})},renderHoursList:function(){var t="h"===this.hourType||"hh"===this.hourType?12:24;this.hours=[];for(var e=0;e<t;e++)this.hours.push(this.formatValue(this.hourType,e))},renderList:function(t,e){if("second"===t)e=e||this.secondInterval;else{if("minute"!==t)return;e=e||this.minuteInterval}0===e?e=60:e>60?(window.console.warn("`"+t+"-interval` should be less than 60. Current value is",e),e=1):e<1?(window.console.warn("`"+t+"-interval` should be NO less than 1. Current value is",e),e=1):e||(e=1),"minute"===t?this.minutes=[]:this.seconds=[];for(var n=0;n<60;n+=e)"minute"===t?this.minutes.push(this.formatValue(this.minuteType,n)):this.seconds.push(this.formatValue(this.secondType,n))},renderApmList:function(){this.apms=[],this.apmType&&(this.apms="A"===this.apmType?["AM","PM"]:["am","pm"])},readValues:function(){if(this.value&&!this.muteWatch){var t=JSON.parse((0,o.default)(this.value||{})),e=(0,i.default)(t);0!==e.length&&(e.indexOf(this.hourType)>-1&&(this.hour=t[this.hourType]),e.indexOf(this.minuteType)>-1&&(this.minute=t[this.minuteType]),e.indexOf(this.secondType)>-1?this.second=t[this.secondType]:this.second=0,e.indexOf(this.apmType)>-1&&(this.apm=t[this.apmType]),this.fillValues())}},fillValues:function(){var t={},e=this.hour,n=this.hourType,a=e||0===e?Number(e):"",s=this.isTwelveHours(n),i=!(!s||!this.apm)&&String(this.apm).toLowerCase();if(d.HOUR_TOKENS.forEach(function(r){if(r===n)return void(t[r]=e);var o=void 0,d=void 0;switch(r){case"H":case"HH":if(!String(a).length)return void(t[r]="");o=s?"pm"===i?a<12?a+12:a:a%12:a%24,t[r]="HH"===r&&o<10?"0"+o:String(o);break;case"k":case"kk":if(!String(a).length)return void(t[r]="");o=s?"pm"===i?a<12?a+12:a:12===a?24:a:0===a?24:a,t[r]="kk"===r&&o<10?"0"+o:String(o);break;case"h":case"hh":if(i)o=a,d=i||"am";else{if(!String(a).length)return t[r]="",t.a="",void(t.A="");a>11?(d="pm",o=12===a?12:a%12):(d=s?"":"am",o=a%12==0?12:a)}t[r]="hh"===r&&o<10?"0"+o:String(o),t.a=d,t.A=d.toUpperCase()}}),this.minute||0===this.minute){var r=Number(this.minute);t.m=String(r),t.mm=r<10?"0"+r:String(r)}else t.m="",t.mm="";if(this.second||0===this.second){var o=Number(this.second);t.s=String(o),t.ss=o<10?"0"+o:String(o)}else t.s="",t.ss="";this.fullValues=t,this.updateTimeValue(t),this.$emit("change",{data:t})},updateTimeValue:function(t){this.muteWatch=!0;var e=this,n=JSON.parse((0,o.default)(this.value||{})),a={};(0,i.default)(n).forEach(function(e){a[e]=t[e]}),this.$emit("input",a),this.$nextTick(function(){e.muteWatch=!1})},isTwelveHours:function(t){return"h"===t||"hh"===t},toggleDropdown:function(){this.showDropdown=!this.showDropdown},select:function(t,e){"hour"===t?this.hour=e:"minute"===t?this.minute=e:"second"===t?this.second=e:"apm"===t&&(this.apm=e)},clearTime:function(){this.hour="",this.minute="",this.second="",this.apm=""}},mounted:function(){this.renderFormat()}}},function(t,e,n){t.exports={default:n(280),__esModule:!0}},function(t,e,n){var a=n(3),s=a.JSON||(a.JSON={stringify:JSON.stringify});t.exports=function(t){return s.stringify.apply(s,arguments)}},function(t,e){t.exports='\n<span class="time-picker">\n <input class="display-time" :id="id" v-model="displayTime" @click.stop="toggleDropdown" type="text" readonly />\n <span class="clear-btn" v-if="!hideClearButton" v-show="!showDropdown && showClearBtn" @click.stop="clearTime">×</span>\n <div class="time-picker-overlay" v-if="showDropdown" @click.stop="toggleDropdown"></div>\n <div class="dropdown" v-show="showDropdown">\n <div class="select-list">\n <ul class="hours">\n <li class="hint" v-text="hourType"></li>\n <li v-for="hr in hours" v-text="hr" :class="{active: hour === hr}" @click.stop="select(\'hour\', hr)"></li>\n </ul>\n <ul class="minutes">\n <li class="hint" v-text="minuteType"></li>\n <li v-for="m in minutes" v-text="m" :class="{active: minute === m}" @click.stop="select(\'minute\', m)"></li>\n </ul>\n <ul class="seconds" v-if="secondType">\n <li class="hint" v-text="secondType"></li>\n <li v-for="s in seconds" v-text="s" :class="{active: second === s}" @click.stop="select(\'second\', s)"></li>\n </ul>\n <ul class="apms" v-if="apmType">\n <li class="hint" v-text="apmType"></li>\n <li v-for="a in apms" v-text="a" :class="{active: apm === a}" @click.stop="select(\'apm\', a)"></li>\n </ul>\n </div>\n </div>\n</span>\n'},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,n){function a(t){return n(s(t))}function s(t){var e=i[t];if(!(e+1))throw new Error("Cannot find module '"+t+"'.");return e}var i={"./af":87,"./af.js":87,"./ar":88,"./ar-dz":89,"./ar-dz.js":89,"./ar-kw":90,"./ar-kw.js":90,"./ar-ly":91,"./ar-ly.js":91,"./ar-ma":92,"./ar-ma.js":92,"./ar-sa":93,"./ar-sa.js":93,"./ar-tn":94,"./ar-tn.js":94,"./ar.js":88,"./az":95,"./az.js":95,"./be":96,"./be.js":96,"./bg":97,"./bg.js":97,"./bm":98,"./bm.js":98,"./bn":99,"./bn.js":99,"./bo":100,"./bo.js":100,"./br":101,"./br.js":101,"./bs":102,"./bs.js":102,"./ca":103,"./ca.js":103,"./cs":104,"./cs.js":104,"./cv":105,"./cv.js":105,"./cy":106,"./cy.js":106,"./da":107,"./da.js":107,"./de":108,"./de-at":109,"./de-at.js":109,"./de-ch":110,"./de-ch.js":110,"./de.js":108,"./dv":111,"./dv.js":111,"./el":112,"./el.js":112,"./en-SG":113,"./en-SG.js":113,"./en-au":114,"./en-au.js":114,"./en-ca":115,"./en-ca.js":115,"./en-gb":116,"./en-gb.js":116,"./en-ie":117,"./en-ie.js":117,"./en-il":118,"./en-il.js":118,"./en-nz":119,"./en-nz.js":119,"./eo":120,"./eo.js":120,"./es":121,"./es-do":122,"./es-do.js":122,"./es-us":123,"./es-us.js":123,"./es.js":121,"./et":124,"./et.js":124,"./eu":125,"./eu.js":125,"./fa":126,"./fa.js":126,"./fi":127,"./fi.js":127,"./fo":128,"./fo.js":128,"./fr":129,"./fr-ca":130,"./fr-ca.js":130,"./fr-ch":131,"./fr-ch.js":131,"./fr.js":129,"./fy":132,"./fy.js":132,"./ga":133,"./ga.js":133,"./gd":134,"./gd.js":134,"./gl":135,"./gl.js":135,"./gom-latn":136,"./gom-latn.js":136,"./gu":137,"./gu.js":137,"./he":138,"./he.js":138,"./hi":139,"./hi.js":139,"./hr":140,"./hr.js":140,"./hu":141,"./hu.js":141,"./hy-am":142,"./hy-am.js":142,"./id":143,"./id.js":143,"./is":144,"./is.js":144,"./it":145,"./it-ch":146,"./it-ch.js":146,"./it.js":145,"./ja":147,"./ja.js":147,"./jv":148,"./jv.js":148,"./ka":149,"./ka.js":149,"./kk":150,"./kk.js":150,"./km":151,"./km.js":151,"./kn":152,"./kn.js":152,"./ko":153,"./ko.js":153,"./ku":154,"./ku.js":154,"./ky":155,"./ky.js":155,"./lb":156,"./lb.js":156,"./lo":157,"./lo.js":157,"./lt":158,"./lt.js":158,"./lv":159,"./lv.js":159,"./me":160,"./me.js":160,"./mi":161,"./mi.js":161,"./mk":162,"./mk.js":162,"./ml":163,"./ml.js":163,"./mn":164,"./mn.js":164,"./mr":165,"./mr.js":165,"./ms":166,"./ms-my":167,"./ms-my.js":167,"./ms.js":166,"./mt":168,"./mt.js":168,"./my":169,"./my.js":169,"./nb":170,"./nb.js":170,"./ne":171,"./ne.js":171,"./nl":172,"./nl-be":173,"./nl-be.js":173,"./nl.js":172,"./nn":174,"./nn.js":174,"./pa-in":175,"./pa-in.js":175,"./pl":176,"./pl.js":176,"./pt":177,"./pt-br":178,"./pt-br.js":178,"./pt.js":177,"./ro":179,"./ro.js":179,"./ru":180,"./ru.js":180,"./sd":181,"./sd.js":181,"./se":182,"./se.js":182,"./si":183,"./si.js":183,"./sk":184,"./sk.js":184,"./sl":185,"./sl.js":185,"./sq":186,"./sq.js":186,"./sr":187,"./sr-cyrl":188,"./sr-cyrl.js":188,"./sr.js":187,"./ss":189,"./ss.js":189,"./sv":190,"./sv.js":190,"./sw":191,"./sw.js":191,"./ta":192,"./ta.js":192,"./te":193,"./te.js":193,"./tet":194,"./tet.js":194,"./tg":195,"./tg.js":195,"./th":196,"./th.js":196,"./tl-ph":197,"./tl-ph.js":197,"./tlh":198,"./tlh.js":198,"./tr":199,"./tr.js":199,"./tzl":200,"./tzl.js":200,"./tzm":201,"./tzm-latn":202,"./tzm-latn.js":202,"./tzm.js":201,"./ug-cn":203,"./ug-cn.js":203,"./uk":204,"./uk.js":204,"./ur":205,"./ur.js":205,"./uz":206,"./uz-latn":207,"./uz-latn.js":207,"./uz.js":206,"./vi":208,"./vi.js":208,"./x-pseudo":209,"./x-pseudo.js":209,"./yo":210,"./yo.js":210,"./zh-cn":211,"./zh-cn.js":211,"./zh-hk":212,"./zh-hk.js":212,"./zh-tw":213,"./zh-tw.js":213};a.keys=function(){return Object.keys(i)},a.resolve=s,t.exports=a,a.id=283},function(t,e){t.exports='\n\t<div :class="\'rop-control-container-\'+ ( license > 1 ) + \' rop-schedule-tab-container\'" _v-07e2d0a2="">\n\n\t\t<div class="columns py-2 rop-control" _v-07e2d0a2="">\n\t\t\t<div class="column col-6 col-sm-12 vertical-align" _v-07e2d0a2="">\n\t\t\t\t<b _v-07e2d0a2="">{{labels.schedule_type_title}}</b>\n\t\t\t\t<p class="text-gray" _v-07e2d0a2="">{{labels.schedule_type_desc}}</p>\n\t\t\t</div>\n\t\t\t<div class="column col-6 col-sm-12 vertical-align" _v-07e2d0a2="">\n\t\t\t\t<div class="form-group" _v-07e2d0a2="">\n\t\t\t\t\t<select class="form-select" v-model="schedule.type" _v-07e2d0a2="">\n\t\t\t\t\t\t<option value="recurring" _v-07e2d0a2="">{{labels.schedule_type_option_rec}}</option>\n\t\t\t\t\t\t<option value="fixed" _v-07e2d0a2="">{{labels.schedule_type_option_fix}}</option>\n\t\t\t\t\t</select>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t\x3c!-- Fixed Schedule Days --\x3e\n\t\t<div class="columns py-2 rop-control" v-if="schedule.type === \'fixed\'" _v-07e2d0a2="">\n\t\t\t<div class="column col-6 col-sm-12 vertical-align" _v-07e2d0a2="">\n\t\t\t\t<b _v-07e2d0a2="">{{labels.schedule_fixed_days_title}}</b>\n\t\t\t\t<p class="text-gray" _v-07e2d0a2="">{{labels.schedule_fixed_days_desc}}</p>\n\t\t\t</div>\n\t\t\t<div class="column col-6 col-sm-12 vertical-align" _v-07e2d0a2="">\n\t\t\t\t<div class="form-group input-group" _v-07e2d0a2="">\n\t\t\t\t\t<button-checkbox v-for="( data, label ) in daysObject" :key="label" :value="data.value" :label="label" :checked="data.checked" @add-day="addDay" @rmv-day="rmvDay" _v-07e2d0a2=""></button-checkbox>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t\x3c!-- Fixed Schedule time --\x3e\n\t\t<div class="columns py-2 rop-control" v-if="schedule.type === \'fixed\'" _v-07e2d0a2="">\n\t\t\t<div class="column col-6 col-sm-12 vertical-align" _v-07e2d0a2="">\n\t\t\t\t<b _v-07e2d0a2="">{{labels.schedule_fixed_time_title}}</b>\n\t\t\t\t<p class="text-gray" _v-07e2d0a2="">{{labels.schedule_fixed_time_desc}}</p>\n\t\t\t</div>\n\t\t\t<div class="column col-6 col-sm-12 vertical-align" _v-07e2d0a2="">\n\t\t\t\t<div class="form-group" _v-07e2d0a2="">\n\t\t\t\t\t<div class="input-group" v-for="( time, index ) in schedule.interval_f.time" _v-07e2d0a2="">\n\t\t\t\t\t\t<vue-timepicker :minute-interval="5" class="timepicker-style-fix" :value="getTime( index )" @change="syncTime( $event, index )" hide-clear-button="" _v-07e2d0a2=""></vue-timepicker>\n\t\t\t\t\t\t<button class="btn btn-danger input-group-btn" v-if="schedule.interval_f.time.length > 1" @click="rmvTime( index )" _v-07e2d0a2="">\n\t\t\t\t\t\t\t<i class="fa fa-fw fa-minus" _v-07e2d0a2=""></i>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<button class="btn btn-success input-group-btn" v-if="index == schedule.interval_f.time.length - 1" @click="addTime()" _v-07e2d0a2="">\n\t\t\t\t\t\t\t<i class="fa fa-fw fa-plus" _v-07e2d0a2=""></i>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t\x3c!-- Current time --\x3e\n<div class="column col-6 col-sm-12 vertical-align float-right" v-if="schedule.type === \'fixed\'" _v-07e2d0a2="">\n\t\t<div class="toast rop-current-time text-center" v-if="formatedDate" _v-07e2d0a2="">\n\t\t\t\t{{labels.time_now}}: {{ formatedDate }}\n\t\t</div>\n</div>\n\n\t\t<div class="columns py-2 rop-control" v-else="" _v-07e2d0a2="">\n\t\t\t<div class="column col-6 col-sm-12 vertical-align" _v-07e2d0a2="">\n\t\t\t\t<b _v-07e2d0a2="">{{labels.schedule_rec_title}}</b>\n\t\t\t\t<p class="text-gray" _v-07e2d0a2="">{{labels.schedule_rec_desc}}</p>\n\t\t\t</div>\n\t\t\t<div class="column col-6 col-sm-12 vertical-align" _v-07e2d0a2="">\n\t\t\t\t<div class="form-group" _v-07e2d0a2="">\n\t\t\t\t\t<counter-input id="interval_r" :value.sync="schedule.interval_r" _v-07e2d0a2=""></counter-input>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t\x3c!-- Upsell --\x3e\n\t\t<div class="columns py-2" v-if="license < 2" _v-07e2d0a2="">\n\t\t\t<div class="column text-center" _v-07e2d0a2="">\n\t\t\t\t<p class="upsell" _v-07e2d0a2=""><i class="fa fa-lock" _v-07e2d0a2=""></i> {{labels.schedule_upsell}}</p>\n\t\t\t</div>\n\t\t</div>\n\t\t<span class="divider" _v-07e2d0a2=""></span>\n\t</div>\n'},function(t,e){t.exports='\n\t<div class="tab-view" _v-6ded7d15="">\n\t\t<div class="panel-body" _v-6ded7d15="">\n\t\t\t<div class="d-inline-block mt-2 column col-12" _v-6ded7d15="">\n\t\t\t\t<p class="text-gray" _v-6ded7d15=""><i class="fa fa-info-circle" _v-6ded7d15=""></i> <span v-html="labels.accounts_selector" _v-6ded7d15=""></span>\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t\t<empty-active-accounts v-if="accountsCount === 0" _v-6ded7d15=""></empty-active-accounts>\n\t\t\t<div class="container" v-if="accountsCount > 0" _v-6ded7d15="">\n\t\t\t\t<div class="columns" _v-6ded7d15="">\n\t\t\t\t\t<div class="column col-3 col-sm-12 col-md-12 col-xl-3 col-lg-3 col-xs-12 col-rop-selector-accounts" _v-6ded7d15="">\n\t\t\t\t\t\t<span class="divider" _v-6ded7d15=""></span>\n\t\t\t\t\t\t<div v-for="( account, id ) in active_accounts" _v-6ded7d15="">\n\t\t\t\t\t\t\t<div class="rop-selector-account-container" :class="{active: selected_account===id}" @click="setActiveAccount(id)" _v-6ded7d15="">\n\t\t\t\t\t\t\t\t<div class="tile tile-centered rop-account" _v-6ded7d15="">\n\t\t\t\t\t\t\t\t\t<div class="tile-icon" _v-6ded7d15="">\n\t\t\t\t\t\t\t\t\t\t<div class="icon_box" :class=" (account.img ? \'has_image\' : \'no-image\' ) + \' \' +account.service " _v-6ded7d15="">\n\t\t\t\t\t\t\t\t\t\t\t<img class="service_account_image" :src="account.img" v-if="account.img" _v-6ded7d15="">\n\t\t\t\t\t\t\t\t\t\t\t<i class="fa " :class="getIcon(account)" aria-hidden="true" _v-6ded7d15=""></i>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div class="tile-content" _v-6ded7d15="">\n\t\t\t\t\t\t\t\t\t\t<p class="rop-account-name" _v-6ded7d15="">{{account.user}}</p>\n\t\t\t\t\t\t\t\t\t\t<strong class="rop-service-name" _v-6ded7d15="">{{account.service}}</strong>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<span class="divider" _v-6ded7d15=""></span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="column col-9 col-sm-12 col-md-12 col-xl-9 col-lg-9 col-xs-12" :class="\'rop-tab-state-\'+is_loading" _v-6ded7d15="">\n\t\t\t\t\t\t<component :is="type" :account_id="selected_account" :license="license" _v-6ded7d15=""></component>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="panel-footer" v-if="accountsCount > 0" _v-6ded7d15="">\n\t\t\t<div class="panel-actions text-right" v-if="allow_footer" _v-6ded7d15="">\n\t\t\t\t<button class="btn btn-secondary" @click="resetAccountData()" _v-6ded7d15=""><i class="fa fa-ban" v-if="!this.is_loading" _v-6ded7d15=""></i> <i class="fa fa-spinner fa-spin" v-else="" _v-6ded7d15=""></i> {{labels.reset_selector_btn}} {{component_label}}\n\t\t\t\t\t{{labels.for}}\n\t\t\t\t\t<b _v-6ded7d15="">{{active_account_name}}</b>\n\t\t\t\t</button>\n\t\t\t\t<button class="btn btn-primary" @click="saveAccountData()" _v-6ded7d15=""><i class="fa fa-check" v-if="!this.is_loading" _v-6ded7d15=""></i> <i class="fa fa-spinner fa-spin" v-else="" _v-6ded7d15=""></i> {{labels.save_selector_btn}} {{component_label}}\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n'},function(t,e,n){var a,s;a=n(287),s=n(293),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{default:t}}var s=n(18),i=a(s),r=n(288),o=a(r);t.exports={name:"queue-view",computed:{queueCount:function(){return(0,i.default)(this.$store.state.queue).length},queue:function(){return this.$store.state.queue},start_status:function(){return this.$store.state.cron_status.current_status},is_business:function(){return this.$store.state.licence>1}},data:function(){return{is_loading:!1,labels:this.$store.state.labels.queue,upsell_link:ropApiSettings.upsell_link}},watch:{start_status:function(t){this.refreshQueue()}},mounted:function(){this.start_status&&this.refreshQueue(!1)},methods:{refreshQueue:function(t){var e=this;if(this.is_loading)return void this.$log.warn("Request in progress...Bail");this.$store.state.queue=[],this.is_loading=!0,this.$store.dispatch("fetchAJAXPromise",{req:"get_queue",data:{force:t}}).then(function(t){e.is_loading=!1,e.$store.dispatch("fetchAJAX",{req:"manage_cron"})},function(t){e.is_loading=!1,Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t)})}},components:{QueueCard:o.default}}},function(t,e,n){var a,s;n(289),a=n(291),s=n(292),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(290);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n\t.fa[_v-0395a54b] {\n\t\tbackground: transparent;\n\t}\n\t\n\t#rop_core .vertical-align[_v-0395a54b] {\n\t\t-ms-flex-align: end;\n\t\t align-items: flex-end;\n\t}\n\t\n\t#rop_core figure.figure[_v-0395a54b] {\n\t\tmargin: -.7em -2em -1em 0;\n\t}\n\t\n\t@media (max-width: 600px) {\n\t\t#rop_core .vertical-align[_v-0395a54b] {\n\t\t\t-ms-flex-align: center;\n\t\t\t align-items: center;\n\t\t}\n\t\t\n\t\t#rop_core figure.figure[_v-0395a54b] {\n\t\t\tmargin: 10px auto 0;\n\t\t}\n\t}\n",""])},function(t,e,n){"use strict";t.exports={name:"queue-card",props:{id:{default:""},enabled:{default:!1,type:Boolean},card_data:{default:{},type:Object}},data:function(){return{edit:!1,labels:this.$store.state.labels.queue,upsell_link:ropApiSettings.upsell_link,video_placeholder:ROP_ASSETS_URL+"img/video_placeholder.jpg",is_loading:!1,post_edit:{}}},computed:{content:function(){return void 0!==this.card_data.content?this.card_data.content:{}},active_accounts:function(){return this.$store.state.activeAccounts}},mounted:function(){},watch:{},methods:{skipPost:function(t,e){var n=this;if(this.is_loading)return void this.$log.warn("Request in progress...Bail");this.is_loading="skip",this.$store.dispatch("fetchAJAXPromise",{req:"skip_queue_event",data:{account_id:t,post_id:e}}).then(function(t){n.is_loading=!1},function(t){n.is_loading=!1,Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t)})},blockPost:function(t,e){var n=this;if(this.is_loading)return void this.$log.warn("Request in progress...Bail");this.is_loading="block",this.$store.dispatch("fetchAJAXPromise",{req:"block_queue_event",data:{account_id:t,post_id:e}}).then(function(t){n.is_loading=!1},function(t){n.is_loading=!1,Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t)})},toggleEditState:function(){this.edit=!this.edit},getAccountName:function(t){return void 0===this.active_accounts[t]?"":this.active_accounts[t].user},checkCount:function(t){this.post_edit.text="",this.post_edit.text!==t.srcElement.value&&(this.post_edit.text=t.srcElement.value)},saveChanges:function(t,e){var n=this;if(this.is_loading)return void this.$log.warn("Request in progress...Bail");this.is_loading="edit",this.$store.dispatch("fetchAJAXPromise",{req:"update_queue_event",data:{account_id:t,post_id:e,custom_data:this.post_edit}}).then(function(t){n.is_loading=!1,n.toggleEditState()},function(t){n.is_loading=!1,n.toggleEditState(),Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t)})},cancelChanges:function(){this.post_edit={},this.toggleEditState()},uploadImage:function(){var t=wp.media({title:this.labels.insert_media_title,library:{type:"image"},multiple:!1,button:{text:this.labels.insert_media_btn}}),e=this;t.on("select",function(){var n=t.state().get("selection").first().toJSON();e.content.post_image=n.url,e.post_edit.image=n.url}),t.open()},removeImage:function(){var t=this;t.content.post_image=null,t.post_edit.image=null},iconClass:function(t){var e="fa-user";if(null!==t){e="fa-";var n=this.active_accounts[t];void 0!==n&&"facebook"===n.service&&(e=e.concat("facebook facebook")),void 0!==n&&"twitter"===n.service&&(e=e.concat("twitter twitter")),void 0!==n&&"linkedin"===n.service&&(e=e.concat("linkedin linkedin")),void 0!==n&&"tumblr"===n.service&&(e=e.concat("tumblr tumblr")),void 0!==n&&"pinterest"===n.service&&(e=e.concat("pinterest pinterest"))}return e},hashtags:function(t){var e=new RegExp("#\\S+","ig");return t.toString().replace(e,function(t,e,n){return","===t.slice(-1)?"<strong>"+t.substring(0,t.lastIndexOf(","))+"</strong>,":"<strong>"+t+"</strong>"})}}}},function(t,e){t.exports='\n\t<div class="card" _v-0395a54b="">\n\t\t<div class="columns" _v-0395a54b="">\n\t\t\t<div class="column col-sm-12 col-justified" _v-0395a54b="">\n\t\t\t\t<div class="columns" _v-0395a54b="">\n\t\t\t\t\t<div class="column" _v-0395a54b="">\n\t\t\t\t\t\t<p class="text-gray text-left " _v-0395a54b=""><i class="fa fa-clock-o" _v-0395a54b=""></i> {{card_data.date}} <b _v-0395a54b=""><i class="fa fa-at" _v-0395a54b=""></i></b> <i class="service fa" :class="iconClass( card_data.account_id )" _v-0395a54b=""></i>\n\t\t\t\t\t\t\t{{getAccountName(card_data.account_id)}}</p>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="columns" v-if="!edit" _v-0395a54b="">\n\t\t\t\t\t<div class="column col-12" _v-0395a54b="">\n\t\t\t\t\t\t<p v-html="content.content + hashtags( content.hashtags )" _v-0395a54b=""></p>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="form-group columns" v-if="edit" _v-0395a54b="">\n\t\t\t\t\t<div class="column col-12" v-if="content.post_with_image" _v-0395a54b="">\n\t\t\t\t\t\t<label class="form-label" for="image" _v-0395a54b="">{{labels.queue_image}}</label>\n\t\t\t\t\t\t<div class="input-group" _v-0395a54b="">\n\t\t\t\t\t\t\t<span class="input-group-addon" _v-0395a54b=""><i class="fa fa-file-image-o" _v-0395a54b=""></i></span>\n\t\t\t\t\t\t\t<input id="image" type="text" class="form-input" :value="content.post_image" readonly="" _v-0395a54b="">\n\t\t\t\t\t\t\t<button class="btn btn-primary input-group-btn tooltip" @click="uploadImage" :data-tooltip="labels.upload_image" _v-0395a54b="">\n\t\t\t\t\t\t\t\t<i class="fa fa-upload" aria-hidden="true" _v-0395a54b=""></i>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t<button class="btn btn-danger input-group-btn tooltip" @click="removeImage" :data-tooltip="labels.remove_image" _v-0395a54b="">\n\t\t\t\t\t\t\t\t<i class="fa fa-remove" aria-hidden="true" _v-0395a54b=""></i>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="column col-12" _v-0395a54b="">\n\t\t\t\t\t\t<label class="form-label" for="content" _v-0395a54b="">{{labels.queue_content}}</label>\n\t\t\t\t\t\t<textarea class="form-input" id="content" placeholder="" rows="3" @keyup="checkCount" _v-0395a54b="">{{content.content}}</textarea>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="columns col-justified" v-if="!edit" _v-0395a54b="">\n\t\t\t\t\t<div class="column col-3" _v-0395a54b="">\n\t\t\t\t\t\t<button class="btn btn-sm btn-block btn-warning tooltip tooltip-bottom " @click="skipPost(card_data.account_id, card_data.post_id)" :data-tooltip="labels.reschedule_post" :disabled=" ! enabled" _v-0395a54b="">\n\t\t\t\t\t\t\t<i class="fa fa-spinner fa-spin" v-if=" is_loading === \'skip\'" _v-0395a54b=""></i>\n\t\t\t\t\t\t\t<i class="fa fa-step-forward" v-else="" aria-hidden="true" _v-0395a54b=""></i>\n\t\t\t\t\t\t\t{{labels.skip_btn_queue}}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="column col-3" _v-0395a54b="">\n\t\t\t\t\t\t<button class="btn btn-sm btn-block btn-danger tooltip tooltip-bottom " :data-tooltip="labels.ban_post" @click="blockPost(card_data.account_id, card_data.post_id)" :disabled=" ! enabled" _v-0395a54b="">\n\t\t\t\t\t\t\t<i class="fa fa-spinner fa-spin" v-if=" is_loading === \'block\'" _v-0395a54b=""></i>\n\t\t\t\t\t\t\t<i class="fa fa-ban" aria-hidden="true" v-else="" _v-0395a54b=""></i>\n\t\t\t\t\t\t\t{{labels.block_btn_queue}}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="column col-3" _v-0395a54b="">\n\t\t\t\t\t\t<button class="btn btn-sm btn-block btn-primary" @click="toggleEditState" v-if="!edit" :disabled=" ! enabled" _v-0395a54b="">\n\t\t\t\t\t\t\t<i class="fa fa-pencil" aria-hidden="true" _v-0395a54b=""></i> {{labels.edit_queue}}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="column col-3 col-ml-auto text-right" v-if="content.post_url !== \'\'" _v-0395a54b="">\n\t\t\t\t\t\t<p class="m-0" _v-0395a54b="">\n\t\t\t\t\t\t\t<b _v-0395a54b="">{{labels.link_title}}:</b>\n\t\t\t\t\t\t\t<a :href="content.post_url" target="_blank" class="tooltip" :data-tooltip="labels.link_shortned_start + \' \' + ( content.short_url_service == \'\' ? \'permalink\' : content.short_url_service ) " _v-0395a54b="">\n\t\t\t\t\t\t\t\t{{\'{\' + ( content.short_url_service == \'\' ? \'permalink\' : content.short_url_service ) +\n\t\t\t\t\t\t\t\t\'}\'}}</a>\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="columns" v-else="" _v-0395a54b="">\n\t\t\t\t\t<div class="column col-3" _v-0395a54b="">\n\t\t\t\t\t\t<button class="btn btn-sm btn-block btn-success" @click="saveChanges(card_data.account_id, card_data.post_id)" v-if="edit" :disabled=" ! enabled" _v-0395a54b="">\n\t\t\t\t\t\t\t<i class="fa fa-spinner fa-spin" v-if=" is_loading === \'edit\'" _v-0395a54b=""></i>\n\t\t\t\t\t\t\t<i class="fa fa-check" aria-hidden="true" v-else="" _v-0395a54b=""></i>\n\t\t\t\t\t\t\t{{labels.save_edit}}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="column col-3" _v-0395a54b="">\n\t\t\t\t\t\t<button class="btn btn-sm btn-block btn-warning" @click="cancelChanges" v-if="edit" :disabled=" ! enabled" _v-0395a54b="">\n\t\t\t\t\t\t\t<i class="fa fa-times" aria-hidden="true" _v-0395a54b=""></i>\n\t\t\t\t\t\t\t{{labels.cancel_edit}}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="column col-4 col-sm-12 vertical-align" v-if="!edit && content.post_with_image" _v-0395a54b="">\n\t\t\t\t<div v-if="content.post_image !== \'\'" _v-0395a54b="">\n\t\t\t\t\t<figure class="figure" v-if="content.post_image !== \'\'" _v-0395a54b="">\n\t\t\t\t\t\t<img :src="( content.mimetype.type.indexOf(\'image\') > -1 ? content.post_image : video_placeholder )" class="img-fit-cover img-responsive" _v-0395a54b="">\n\t\t\t\t\t</figure>\n\t\t\t\t\n\t\t\t\t</div>\n\t\t\t\t<div class="rop-image-placeholder" v-else="" _v-0395a54b="">\n\t\t\t\t\t<summary _v-0395a54b="">\n\t\t\t\t\t\t<i class="fa fa-file-image-o" _v-0395a54b=""></i>\n\t\t\t\t\t\t{{labels.queue_no_image}}\n\t\t\t\t\t</summary>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n'},function(t,e){t.exports='\n\t<div class="tab-view rop-queue-tab-container">\n\t\t<div class="panel-body" :class="\'rop-tab-state-\'+is_loading">\n\t\t\t<div class="columns" v-if="! start_status">\n\t\t\t\t<div class="column col-12 text-center empty-container">\n\t\t\t\t\t<div class="empty-icon">\n\t\t\t\t\t\t<i class="fa fa-3x fa-info-circle"></i>\n\t\t\t\t\t</div>\n\t\t\t\t\t<p class="empty-title h5">{{labels.sharing_not_started}}</p>\n\t\t\t\t\t<p class="empty-subtitle">{{labels.sharing_not_started_desc}}</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div v-else-if="start_status && queueCount > 0 ">\n\n\t\t\t\t<div class="columns py-2" v-if="! is_business">\n\t\t\t\t\t<div class="column text-center">\n\t\t\t\t\t\t<p class="upsell"><i class="fa fa-lock"></i> <span v-html="labels.biz_only"></span></p>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\x3c!-- When sharing is started but we have the business plan. --\x3e\n\t\t\t\t<div class="d-inline-block mt-2 column col-12">\n\t\t\t\t\t<p class="text-gray info-paragraph"><i class="fa fa-info-circle"></i> {{labels.queue_desc}}</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="empty" v-else-if="start_status && queueCount === 0">\n\t\t\t\t<div class="empty-icon">\n\t\t\t\t\t<i class="fa fa-3x fa-info-circle"></i>\n\t\t\t\t</div>\n\t\t\t\t<p class="empty-title h5">{{labels.no_posts}}</p>\n\t\t\t\t<p class="empty-subtitle" v-html="labels.no_posts_desc"></p>\n\t\t\t</div>\n\t\t\t<div class="columns" v-if="start_status && queueCount > 0">\n\t\t\t\t<div class="column col-12 text-left" v-for=" (data, index) in queue ">\n\t\t\t\t\t<queue-card :card_data="data.post_data" :id="index" :enabled="is_business"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="panel-footer text-rightcade" v-if="start_status">\n\t\t\t<button class="btn btn-secondary" @click="refreshQueue(true)">\n\t\t\t\t<i class="fa fa-refresh" v-if="!is_loading"></i>\n\t\t\t\t<i class="fa fa-spinner fa-spin" v-else></i>\n\t\t\t\t{{labels.refresh_btn}}\n\t\t\t</button>\n\t\t</div>\n\t</div>\n'},function(t,e,n){var a,s;n(295),a=n(297),s=n(298),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(296);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n\t#rop_core .toast.log-toast p[_v-ed733db4] {\n\t\tmargin: 0px;\n\t\tline-height: inherit;\n\t}\n\n\t#rop_core .toast.log-toast[_v-ed733db4]:hover {\n\t\topacity: 0.9;\n\t}\n\n\t#rop_core .toast.log-toast[_v-ed733db4] {\n\t\tpadding: 0.1rem;\n\t\tpadding-left: 10px;\n\t\tmargin-top: 2px;\n\t}\n\n\t#rop_core .container[_v-ed733db4] {\n\t\tmin-height: 400px;\n\t}\n\n\t.columns[_v-ed733db4] {\n\t\tline-break: anywhere;\n\t}\n",""])},function(t,e,n){"use strict";var a=n(0),s=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports={name:"logs-view",props:["model"],data:function(){return{is_loading:!1,labels:this.$store.state.labels.logs,upsell_link:ropApiSettings.upsell_link}},mounted:function(){this.getLogs()},computed:{logs:function(){return this.$store.state.page.logs},logs_no:function(){return this.$store.state.cron_status.logs_number}},watch:{logs_no:function(){this.getLogs()}},methods:{getLogs:function(t){var e=this;if(this.is_loading)return void this.$log.warn("Request in progress...Bail");this.is_loading=!0,this.$store.dispatch("fetchAJAXPromise",{req:"get_log",data:{force:t}}).then(function(n){if(e.$log.info("Succesfully fetched logs."),e.is_loading=!1,e.$store.dispatch("fetchAJAX",{req:"manage_cron",data:{action:"status"}}),!0===t){var a={type:"success",show:!1,title:"",message:""};e.$store.commit("updateState",{stateData:a,requestName:"update_toast"})}},function(t){Vue.$log.error("Got nothing from server. Prompt user to check internet connection and try again",t),e.is_loading=!1})},formatDate:function(t){var e=this.$store.state.cron_status.date_format;return"undefined"===e?"":s.default.utc(t,"X").format(e.replace("mm","mm:ss"))}}}},function(t,e){t.exports='\n\t<div class="tab-view" _v-ed733db4="">\n\t\t<div class="panel-body" _v-ed733db4="">\n\t\t\t<div class=" columns mt-2" v-if="logs_no > 0" _v-ed733db4="">\n\t\t\t\t<div class="column col-12 text-right " _v-ed733db4="">\n\t\t\t\t\t<button class="btn btn-secondary " @click="getLogs(true)" _v-ed733db4="">\n\t\t\t\t\t\t<i class="fa fa-remove" v-if="!is_loading" _v-ed733db4=""></i>\n\t\t\t\t\t\t<i class="fa fa-spinner fa-spin" v-else="" _v-ed733db4=""></i>\n\t\t\t\t\t\t{{labels.clear_btn}}\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="columns" _v-ed733db4="">\n\t\t\t\t<div class="empty column col-12" v-if="is_loading" _v-ed733db4="">\n\t\t\t\t\t<div class="empty-icon" _v-ed733db4="">\n\t\t\t\t\t\t<i class="fa fa-3x fa-spinner fa-spin" _v-ed733db4=""></i>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="empty column col-12" v-else-if="logs_no === 0" _v-ed733db4="">\n\t\t\t\t\t<div class="empty-icon" _v-ed733db4="">\n\t\t\t\t\t\t<i class="fa fa-3x fa-info-circle" _v-ed733db4=""></i>\n\t\t\t\t\t</div>\n\t\t\t\t\t<p class="empty-title h5" _v-ed733db4="">{{labels.no_logs}}</p>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="column col-12 mt-2" v-for=" (data, index) in logs " v-else-if="logs_no > 0" _v-ed733db4="">\n\t\t\t\t\t<div class="toast log-toast" :class="\'toast-\' + data.type" _v-ed733db4="">\n\t\t\t\t\t\t<small class="pull-right text-right" _v-ed733db4="">{{formatDate ( data.time ) }}</small>\n\t\t\t\t\t\t<p _v-ed733db4="">{{data.message}}</p>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n'},function(t,e,n){var a,s;n(300),a=n(302),s=n(303),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){var a=n(301);"string"==typeof a&&(a=[[t.i,a,""]]);n(2)(a,{});a.locals&&(t.exports=a.locals)},function(t,e,n){e=t.exports=n(1)(),e.push([t.i,"\n\t#rop_core .toast.hidden {\n\t\tdisplay: none;\n\t}\n\t#rop_core .toast {\n\t\tmargin: 10px 0;\n\t}\n",""])},function(t,e,n){"use strict";t.exports={name:"toast",computed:{toast:function(){return this.$store.state.toast},toastTypeClass:function(){return{"toast-primary":"info"===this.toast.type,"toast-success":"success"===this.toast.type,"toast-warning":"warning"===this.toast.type,"toast-error":"error"===this.toast.type,hidden:!1===this.toast.show}},iconClass:function(){return{"fa-info-circle":"info"===this.toast.type,"fa-check-circle":"success"===this.toast.type,"fa-exclamation-triangle":"warning"===this.toast.type,"fa-exclamation-circle":"error"===this.toast.type}}},mounted:function(){},created:function(){},methods:{closeThis:function(){this.toast.show=!1}}}},function(t,e){t.exports='\n\t<div class="toast" :class="toastTypeClass" >\n\t\t<button class="btn btn-clear float-right" @click="closeThis"></button>\n\t\t<b><i class="fa" :class="iconClass"></i> {{ toast.title }}</b><br/>\n\t\t<small>{{ toast.message }}</small>\n\t</div>\n'},function(t,e,n){var a,s;a=n(305),s=n(310),t.exports=a||{},t.exports.__esModule&&(t.exports=t.exports.default),s&&(("function"==typeof t.exports?t.exports.options:t.exports).template=s)},function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{default:t}}var s=n(18),i=a(s),r=n(306),o=a(r),d=n(0),l=a(d);n(309),t.exports={name:"cowntdown",props:["current_time"],data:function(){return{now:(0,o.default)((new Date).getTime()/1e3),timediff:"",diff_seconds:0,labels:this.$store.state.labels.general,upsell_link:ropApiSettings.upsell_link}},computed:{toTime:function(){return this.$store.state.cron_status.next_event_on},isOn:function(){return this.$store.state.cron_status.current_status},accounts_no:function(){return(0,i.default)(this.$store.state.activeAccounts).length}},watch:{current_time:function(t){if(this.isOn){var e=l.default.utc(t,"X"),n=l.default.utc(this.toTime,"X"),a=l.default.duration(n.diff(e));this.diff_seconds=a.as("second"),this.diff_seconds>0?this.timediff=a.format("d [days], h [hours], m [minutes], s [seconds]"):(this.$store.dispatch("fetchAJAX",{req:"manage_cron"}),this.timediff=this.labels.sharing_now)}}}}},function(t,e,n){t.exports={default:n(307),__esModule:!0}},function(t,e,n){n(308),t.exports=n(3).Math.trunc},function(t,e,n){var a=n(21);a(a.S,"Math",{trunc:function(t){return(t>0?Math.floor:Math.ceil)(t)}})},function(t,e,n){var a,s,i;/*! Moment Duration Format v2.2.2
|
17 |
* https://github.com/jsmreese/moment-duration-format
|
18 |
* Date: 2018-02-16
|
19 |
*
|
includes/admin/class-rop-admin.php
CHANGED
@@ -990,7 +990,7 @@ class Rop_Admin {
|
|
990 |
$service->set_credentials( $account_data['credentials'] );
|
991 |
foreach ( $posts as $post ) {
|
992 |
$post_shared = $account . '_post_id_' . $post;
|
993 |
-
if ( get_option( 'rop_last_post_shared' ) === $post_shared ) {
|
994 |
$logger->info( ucfirst( $account_data['service'] ) . ': ' . Rop_I18n::get_labels( 'sharing.post_already_shared' ) );
|
995 |
// help prevent duplicate posts on some systems
|
996 |
continue;
|
990 |
$service->set_credentials( $account_data['credentials'] );
|
991 |
foreach ( $posts as $post ) {
|
992 |
$post_shared = $account . '_post_id_' . $post;
|
993 |
+
if ( get_option( 'rop_last_post_shared' ) === $post_shared && ROP_DEBUG !== true ) {
|
994 |
$logger->info( ucfirst( $account_data['service'] ) . ': ' . Rop_I18n::get_labels( 'sharing.post_already_shared' ) );
|
995 |
// help prevent duplicate posts on some systems
|
996 |
continue;
|
includes/admin/class-rop-logger.php
CHANGED
@@ -12,9 +12,6 @@
|
|
12 |
* @subpackage Rop/includes/admin
|
13 |
*/
|
14 |
|
15 |
-
use Monolog\Formatter\LineFormatter;
|
16 |
-
use Monolog\Logger;
|
17 |
-
|
18 |
/**
|
19 |
* Class Rop_Logger
|
20 |
*
|
@@ -23,14 +20,6 @@ use Monolog\Logger;
|
|
23 |
*/
|
24 |
class Rop_Logger {
|
25 |
|
26 |
-
/**
|
27 |
-
* An instance of the Logger class.
|
28 |
-
*
|
29 |
-
* @since 8.0.0
|
30 |
-
* @access private
|
31 |
-
* @var Logger $logger An instance of the Logger class.
|
32 |
-
*/
|
33 |
-
private $logger;
|
34 |
/**
|
35 |
* An stream class.
|
36 |
*
|
@@ -49,16 +38,12 @@ class Rop_Logger {
|
|
49 |
*/
|
50 |
public function __construct() {
|
51 |
|
52 |
-
$this->stream = new Rop_Log_Handler( 'rop_logs'
|
53 |
-
$formatter = new LineFormatter( '%message% %context.extra%' . PHP_EOL, 'd-m-Y H:i:s', false, true );
|
54 |
-
$this->stream->setFormatter( $formatter );
|
55 |
-
$this->logger = new Logger( 'rop_logs' );
|
56 |
-
$this->logger->pushHandler( $this->stream );
|
57 |
|
58 |
}
|
59 |
|
60 |
/**
|
61 |
-
* Logs
|
62 |
*
|
63 |
* @since 8.0.0
|
64 |
* @access public
|
@@ -66,12 +51,25 @@ class Rop_Logger {
|
|
66 |
* @param string $message The message to log.
|
67 |
* @param array $context [optional] A context for the message, if needed.
|
68 |
*/
|
69 |
-
public function
|
70 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
}
|
72 |
|
73 |
/**
|
74 |
-
* Logs an
|
75 |
*
|
76 |
* @since 8.0.0
|
77 |
* @access public
|
@@ -80,12 +78,25 @@ class Rop_Logger {
|
|
80 |
* @param array $context [optional] A context for the message, if needed.
|
81 |
*/
|
82 |
public function alert_error( $message = '', $context = array() ) {
|
83 |
-
|
84 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
85 |
}
|
86 |
|
|
|
87 |
/**
|
88 |
-
* Logs an
|
89 |
*
|
90 |
* @since 8.0.0
|
91 |
* @access public
|
@@ -93,9 +104,21 @@ class Rop_Logger {
|
|
93 |
* @param string $message The message to log.
|
94 |
* @param array $context [optional] A context for the message, if needed.
|
95 |
*/
|
96 |
-
public function
|
97 |
-
|
98 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
99 |
}
|
100 |
|
101 |
/**
|
@@ -121,32 +144,6 @@ class Rop_Logger {
|
|
121 |
|
122 |
}
|
123 |
|
124 |
-
/**
|
125 |
-
* Logs a warning message.
|
126 |
-
*
|
127 |
-
* @since 8.0.0
|
128 |
-
* @access public
|
129 |
-
*
|
130 |
-
* @param string $message The message to log.
|
131 |
-
* @param array $context [optional] A context for the message, if needed.
|
132 |
-
*/
|
133 |
-
public function warn( $message = '', $context = array() ) {
|
134 |
-
$this->logger->warn( $message );
|
135 |
-
}
|
136 |
-
|
137 |
-
/**
|
138 |
-
* Logs an error message.
|
139 |
-
*
|
140 |
-
* @since 8.0.0
|
141 |
-
* @access public
|
142 |
-
*
|
143 |
-
* @param string $message The message to log.
|
144 |
-
* @param array $context [optional] A context for the message, if needed.
|
145 |
-
*/
|
146 |
-
public function error( $message = '', $context = array() ) {
|
147 |
-
$this->logger->error( $message );
|
148 |
-
}
|
149 |
-
|
150 |
/**
|
151 |
* Catches errors and gives a more clear message in return.
|
152 |
*
|
12 |
* @subpackage Rop/includes/admin
|
13 |
*/
|
14 |
|
|
|
|
|
|
|
15 |
/**
|
16 |
* Class Rop_Logger
|
17 |
*
|
20 |
*/
|
21 |
class Rop_Logger {
|
22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
/**
|
24 |
* An stream class.
|
25 |
*
|
38 |
*/
|
39 |
public function __construct() {
|
40 |
|
41 |
+
$this->stream = new Rop_Log_Handler( 'rop_logs' );
|
|
|
|
|
|
|
|
|
42 |
|
43 |
}
|
44 |
|
45 |
/**
|
46 |
+
* Logs a success message.
|
47 |
*
|
48 |
* @since 8.0.0
|
49 |
* @access public
|
51 |
* @param string $message The message to log.
|
52 |
* @param array $context [optional] A context for the message, if needed.
|
53 |
*/
|
54 |
+
public function alert_success( $message = '', $context = array() ) {
|
55 |
+
|
56 |
+
if ( ! empty( $context ) ) {
|
57 |
+
$message = $message . ' ' . json_encode( $context );
|
58 |
+
}
|
59 |
+
|
60 |
+
$record = array(
|
61 |
+
'channel' => 'rop_logs',
|
62 |
+
'context' => array(
|
63 |
+
'type' => 'success',
|
64 |
+
),
|
65 |
+
'formatted' => $message,
|
66 |
+
);
|
67 |
+
|
68 |
+
$this->stream->write( $record );
|
69 |
}
|
70 |
|
71 |
/**
|
72 |
+
* Logs an error message.
|
73 |
*
|
74 |
* @since 8.0.0
|
75 |
* @access public
|
78 |
* @param array $context [optional] A context for the message, if needed.
|
79 |
*/
|
80 |
public function alert_error( $message = '', $context = array() ) {
|
81 |
+
|
82 |
+
if ( ! empty( $context ) ) {
|
83 |
+
$message = $message . ' ' . json_encode( $context );
|
84 |
+
}
|
85 |
+
|
86 |
+
$record = array(
|
87 |
+
'channel' => 'rop_logs',
|
88 |
+
'context' => array(
|
89 |
+
'type' => 'error',
|
90 |
+
),
|
91 |
+
'formatted' => $message,
|
92 |
+
);
|
93 |
+
|
94 |
+
$this->stream->write( $record );
|
95 |
}
|
96 |
|
97 |
+
|
98 |
/**
|
99 |
+
* Logs an info message.
|
100 |
*
|
101 |
* @since 8.0.0
|
102 |
* @access public
|
104 |
* @param string $message The message to log.
|
105 |
* @param array $context [optional] A context for the message, if needed.
|
106 |
*/
|
107 |
+
public function info( $message = '', $context = array() ) {
|
108 |
+
|
109 |
+
if ( ! empty( $context ) ) {
|
110 |
+
$message = $message . ' ' . json_encode( $context );
|
111 |
+
}
|
112 |
+
|
113 |
+
$record = array(
|
114 |
+
'channel' => 'rop_logs',
|
115 |
+
'context' => array(
|
116 |
+
'type' => 'info',
|
117 |
+
),
|
118 |
+
'formatted' => $message,
|
119 |
+
);
|
120 |
+
|
121 |
+
$this->stream->write( $record );
|
122 |
}
|
123 |
|
124 |
/**
|
144 |
|
145 |
}
|
146 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
147 |
/**
|
148 |
* Catches errors and gives a more clear message in return.
|
149 |
*
|
includes/admin/class-rop-rest-api.php
CHANGED
@@ -275,7 +275,7 @@ class Rop_Rest_Api {
|
|
275 |
// Service not found or can't be built. Maybe log this exception.
|
276 |
$log = new Rop_Logger();
|
277 |
$error_message = sprintf( 'The shortner service %1$s can NOT be built or was not found', $data['short_url_service'] );
|
278 |
-
$log->
|
279 |
$this->response->set_code( '500' );
|
280 |
}
|
281 |
|
@@ -310,7 +310,7 @@ class Rop_Rest_Api {
|
|
310 |
// Also shorten service not updated at this point.
|
311 |
$log = new Rop_Logger();
|
312 |
$error_message = sprintf( 'The shortner service %1$s can NOT be built or was not found', $data['data']['short_url_service'] );
|
313 |
-
$log->
|
314 |
$this->response->set_code( '500' );
|
315 |
}
|
316 |
if ( $post_format->add_update_post_format( $data['account_id'], $data['data'] ) ) {
|
@@ -718,7 +718,7 @@ class Rop_Rest_Api {
|
|
718 |
} catch ( Exception $exception ) {
|
719 |
// Service can't be built. Not found or otherwise. Maybe log this.
|
720 |
$log = new Rop_Logger();
|
721 |
-
$log->
|
722 |
|
723 |
return null;
|
724 |
}
|
@@ -784,7 +784,7 @@ class Rop_Rest_Api {
|
|
784 |
} catch ( Exception $exception ) {
|
785 |
// Service can't be built. Not found or otherwise. Maybe log this.
|
786 |
$log = new Rop_Logger();
|
787 |
-
$log->
|
788 |
$url = '';
|
789 |
}
|
790 |
|
275 |
// Service not found or can't be built. Maybe log this exception.
|
276 |
$log = new Rop_Logger();
|
277 |
$error_message = sprintf( 'The shortner service %1$s can NOT be built or was not found', $data['short_url_service'] );
|
278 |
+
$log->alert_error( $error_message . $exception->getMessage() );
|
279 |
$this->response->set_code( '500' );
|
280 |
}
|
281 |
|
310 |
// Also shorten service not updated at this point.
|
311 |
$log = new Rop_Logger();
|
312 |
$error_message = sprintf( 'The shortner service %1$s can NOT be built or was not found', $data['data']['short_url_service'] );
|
313 |
+
$log->alert_error( $error_message . $exception->getMessage() );
|
314 |
$this->response->set_code( '500' );
|
315 |
}
|
316 |
if ( $post_format->add_update_post_format( $data['account_id'], $data['data'] ) ) {
|
718 |
} catch ( Exception $exception ) {
|
719 |
// Service can't be built. Not found or otherwise. Maybe log this.
|
720 |
$log = new Rop_Logger();
|
721 |
+
$log->alert_error( 'The service "' . $data['service'] . '" can NOT be built or was not found', $exception );
|
722 |
|
723 |
return null;
|
724 |
}
|
784 |
} catch ( Exception $exception ) {
|
785 |
// Service can't be built. Not found or otherwise. Maybe log this.
|
786 |
$log = new Rop_Logger();
|
787 |
+
$log->alert_error( 'The service "' . $data['service'] . '" can NOT be built or was not found' . $exception->getMessage() );
|
788 |
$url = '';
|
789 |
}
|
790 |
|
includes/admin/helpers/class-rop-log-handler.php
CHANGED
@@ -10,13 +10,10 @@
|
|
10 |
* @since
|
11 |
*/
|
12 |
|
13 |
-
use Monolog\Handler\AbstractProcessingHandler;
|
14 |
-
use Monolog\Logger;
|
15 |
-
|
16 |
/**
|
17 |
* Class Rop_Log_Handler, procesor for user logs.
|
18 |
*/
|
19 |
-
class Rop_Log_Handler
|
20 |
/**
|
21 |
* List of logs.
|
22 |
*
|
@@ -46,13 +43,9 @@ class Rop_Log_Handler extends AbstractProcessingHandler {
|
|
46 |
* Rop_Log_Handler constructor.
|
47 |
*
|
48 |
* @param string $option_name Option where to save this.
|
49 |
-
* @param int $level Level of log.
|
50 |
-
* @param bool $bubble Bubble.
|
51 |
*/
|
52 |
-
public function __construct( $option_name
|
53 |
$this->namespace = $option_name;
|
54 |
-
|
55 |
-
parent::__construct( $level, $bubble );
|
56 |
}
|
57 |
|
58 |
/**
|
@@ -76,6 +69,15 @@ class Rop_Log_Handler extends AbstractProcessingHandler {
|
|
76 |
if ( ! is_array( $current_logs ) ) {
|
77 |
$current_logs = array();
|
78 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
79 |
self::$current_logs = $current_logs;
|
80 |
$this->initialized = true;
|
81 |
}
|
@@ -113,14 +115,13 @@ class Rop_Log_Handler extends AbstractProcessingHandler {
|
|
113 |
*
|
114 |
* @param array $record Record written.
|
115 |
*/
|
116 |
-
|
117 |
if ( ! $this->initialized ) {
|
118 |
$this->initialize();
|
119 |
}
|
120 |
self::$current_logs[] = array(
|
121 |
'channel' => $record['channel'],
|
122 |
'type' => isset( $record['context']['type'] ) ? $record['context']['type'] : 'info',
|
123 |
-
'level' => $record['level'],
|
124 |
'message' => $record['formatted'],
|
125 |
'time' => Rop_Scheduler_Model::get_current_time(),
|
126 |
);
|
10 |
* @since
|
11 |
*/
|
12 |
|
|
|
|
|
|
|
13 |
/**
|
14 |
* Class Rop_Log_Handler, procesor for user logs.
|
15 |
*/
|
16 |
+
class Rop_Log_Handler {
|
17 |
/**
|
18 |
* List of logs.
|
19 |
*
|
43 |
* Rop_Log_Handler constructor.
|
44 |
*
|
45 |
* @param string $option_name Option where to save this.
|
|
|
|
|
46 |
*/
|
47 |
+
public function __construct( $option_name ) {
|
48 |
$this->namespace = $option_name;
|
|
|
|
|
49 |
}
|
50 |
|
51 |
/**
|
69 |
if ( ! is_array( $current_logs ) ) {
|
70 |
$current_logs = array();
|
71 |
}
|
72 |
+
|
73 |
+
if ( ROP_DEBUG !== true ) {
|
74 |
+
foreach ( $current_logs as $key => $log_data ) {
|
75 |
+
if ( $log_data['type'] === 'info' ) {
|
76 |
+
unset( $current_logs[ $key ] );
|
77 |
+
}
|
78 |
+
}
|
79 |
+
}
|
80 |
+
|
81 |
self::$current_logs = $current_logs;
|
82 |
$this->initialized = true;
|
83 |
}
|
115 |
*
|
116 |
* @param array $record Record written.
|
117 |
*/
|
118 |
+
public function write( array $record ) {
|
119 |
if ( ! $this->initialized ) {
|
120 |
$this->initialize();
|
121 |
}
|
122 |
self::$current_logs[] = array(
|
123 |
'channel' => $record['channel'],
|
124 |
'type' => isset( $record['context']['type'] ) ? $record['context']['type'] : 'info',
|
|
|
125 |
'message' => $record['formatted'],
|
126 |
'time' => Rop_Scheduler_Model::get_current_time(),
|
127 |
);
|
includes/admin/models/class-rop-queue-model.php
CHANGED
@@ -207,7 +207,7 @@ class Rop_Queue_Model extends Rop_Model_Abstract {
|
|
207 |
|
208 |
$post_pool = $this->selector->select( $account_id );
|
209 |
if ( empty( $post_pool ) ) {
|
210 |
-
$this->logger->
|
211 |
continue;
|
212 |
}
|
213 |
foreach ( $events as $index => $event ) {
|
207 |
|
208 |
$post_pool = $this->selector->select( $account_id );
|
209 |
if ( empty( $post_pool ) ) {
|
210 |
+
$this->logger->alert_error( 'No posts are available to share for your account. Try activating the Share more than once option or changing the minimum and maximum post age setting to widen the pool of available posts.' );
|
211 |
continue;
|
212 |
}
|
213 |
foreach ( $events as $index => $event ) {
|
includes/class-rop.php
CHANGED
@@ -68,7 +68,7 @@ class Rop {
|
|
68 |
public function __construct() {
|
69 |
|
70 |
$this->plugin_name = 'rop';
|
71 |
-
$this->version = '8.5.
|
72 |
|
73 |
$this->load_dependencies();
|
74 |
$this->set_locale();
|
@@ -282,7 +282,7 @@ class Rop {
|
|
282 |
} catch ( Exception $exception ) {
|
283 |
// Service can't be built. Not found or otherwise. Maybe log this.
|
284 |
$log = new Rop_Logger();
|
285 |
-
$log->
|
286 |
}
|
287 |
}
|
288 |
|
68 |
public function __construct() {
|
69 |
|
70 |
$this->plugin_name = 'rop';
|
71 |
+
$this->version = '8.5.17';
|
72 |
|
73 |
$this->load_dependencies();
|
74 |
$this->set_locale();
|
282 |
} catch ( Exception $exception ) {
|
283 |
// Service can't be built. Not found or otherwise. Maybe log this.
|
284 |
$log = new Rop_Logger();
|
285 |
+
$log->alert_error( 'The service "' . $service . '" can NOT be built or was not found', $exception->getMessage() );
|
286 |
}
|
287 |
}
|
288 |
|
readme.md
CHANGED
@@ -258,6 +258,18 @@ http://revive.social/plugins/revive-old-post
|
|
258 |
|
259 |
|
260 |
## Changelog ##
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
261 |
### 8.5.15 - 2020-09-09 ###
|
262 |
|
263 |
* Change: Require at least PHP 7.1
|
258 |
|
259 |
|
260 |
## Changelog ##
|
261 |
+
### 8.5.17 - 2020-09-24 ###
|
262 |
+
|
263 |
+
* Dev: Add post-install command to composer.json
|
264 |
+
|
265 |
+
|
266 |
+
### 8.5.16 - 2020-09-23 ###
|
267 |
+
|
268 |
+
* Info: Update Google My Business dependency version
|
269 |
+
* Info: Update Themeisle SDK dependency version
|
270 |
+
* Change: Dropped monolog dependency in favor of custom logging methods
|
271 |
+
|
272 |
+
|
273 |
### 8.5.15 - 2020-09-09 ###
|
274 |
|
275 |
* Change: Require at least PHP 7.1
|
readme.txt
CHANGED
@@ -258,6 +258,18 @@ http://revive.social/plugins/revive-old-post
|
|
258 |
|
259 |
|
260 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
261 |
= 8.5.15 - 2020-09-09 =
|
262 |
|
263 |
* Change: Require at least PHP 7.1
|
258 |
|
259 |
|
260 |
== Changelog ==
|
261 |
+
= 8.5.17 - 2020-09-24 =
|
262 |
+
|
263 |
+
* Dev: Add post-install command to composer.json
|
264 |
+
|
265 |
+
|
266 |
+
= 8.5.16 - 2020-09-23 =
|
267 |
+
|
268 |
+
* Info: Update Google My Business dependency version
|
269 |
+
* Info: Update Themeisle SDK dependency version
|
270 |
+
* Change: Dropped monolog dependency in favor of custom logging methods
|
271 |
+
|
272 |
+
|
273 |
= 8.5.15 - 2020-09-09 =
|
274 |
|
275 |
* Change: Require at least PHP 7.1
|
themeisle-hash.json
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"class-rop-autoloader.php":"7bfbb1554230d0ace777adb2e42bebeb","index.php":"39ab8276fb0e4bd3fcab3270822c5977","tweet-old-post.php":"
|
1 |
+
{"class-rop-autoloader.php":"7bfbb1554230d0ace777adb2e42bebeb","index.php":"39ab8276fb0e4bd3fcab3270822c5977","tweet-old-post.php":"33dc4948e31b091ae3a85b251ff0fe47","uninstall.php":"e64207755b80ae94cbeec36edf9ebd46"}
|
tweet-old-post.php
CHANGED
@@ -16,7 +16,7 @@
|
|
16 |
* Plugin Name: Revive Old Posts
|
17 |
* Plugin URI: https://revive.social/
|
18 |
* Description: WordPress plugin that helps you to keeps your old posts alive by sharing them and driving more traffic to them from twitter/facebook or linkedin. It also helps you to promote your content. You can set time and no of posts to share to drive more traffic.For questions, comments, or feature requests, <a href="http://revive.social/support/?utm_source=plugindesc&utm_medium=announce&utm_campaign=top">contact </a> us!
|
19 |
-
* Version: 8.5.
|
20 |
* Author: revive.social
|
21 |
* Author URI: https://revive.social/
|
22 |
* Requires at least: 3.5
|
@@ -110,7 +110,7 @@ register_deactivation_hook( __FILE__, 'rop_deactivation' );
|
|
110 |
function run_rop() {
|
111 |
|
112 |
define( 'ROP_PRO_URL', 'http://revive.social/plugins/revive-old-post/' );
|
113 |
-
define( 'ROP_LITE_VERSION', '8.5.
|
114 |
define( 'ROP_LITE_BASE_FILE', __FILE__ );
|
115 |
define( 'ROP_DEBUG', false );
|
116 |
define( 'ROP_LITE_PATH', plugin_dir_path( __FILE__ ) );
|
16 |
* Plugin Name: Revive Old Posts
|
17 |
* Plugin URI: https://revive.social/
|
18 |
* Description: WordPress plugin that helps you to keeps your old posts alive by sharing them and driving more traffic to them from twitter/facebook or linkedin. It also helps you to promote your content. You can set time and no of posts to share to drive more traffic.For questions, comments, or feature requests, <a href="http://revive.social/support/?utm_source=plugindesc&utm_medium=announce&utm_campaign=top">contact </a> us!
|
19 |
+
* Version: 8.5.17
|
20 |
* Author: revive.social
|
21 |
* Author URI: https://revive.social/
|
22 |
* Requires at least: 3.5
|
110 |
function run_rop() {
|
111 |
|
112 |
define( 'ROP_PRO_URL', 'http://revive.social/plugins/revive-old-post/' );
|
113 |
+
define( 'ROP_LITE_VERSION', '8.5.17' );
|
114 |
define( 'ROP_LITE_BASE_FILE', __FILE__ );
|
115 |
define( 'ROP_DEBUG', false );
|
116 |
define( 'ROP_LITE_PATH', plugin_dir_path( __FILE__ ) );
|
vendor/autoload.php
CHANGED
@@ -4,4 +4,4 @@
|
|
4 |
|
5 |
require_once __DIR__ . '/composer' . '/autoload_real.php';
|
6 |
|
7 |
-
return
|
4 |
|
5 |
require_once __DIR__ . '/composer' . '/autoload_real.php';
|
6 |
|
7 |
+
return ComposerAutoloaderInit5addd03443a7d2d8e7222a53f7da14a1::getLoader();
|
vendor/codeinwp/themeisle-sdk/CHANGELOG.md
CHANGED
@@ -1,3 +1,104 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
## [3.1.4](https://github.com/Codeinwp/themeisle-sdk/compare/v3.1.3...v3.1.4) (2019-08-23)
|
2 |
|
3 |
|
1 |
+
##### [Version 3.2.15](https://github.com/Codeinwp/themeisle-sdk/compare/v3.2.14...v3.2.15) (2020-07-23)
|
2 |
+
|
3 |
+
* remove no redundant module
|
4 |
+
|
5 |
+
##### [Version 3.2.14](https://github.com/Codeinwp/themeisle-sdk/compare/v3.2.13...v3.2.14) (2020-06-10)
|
6 |
+
|
7 |
+
> Things are getting better every day. 🚀
|
8 |
+
|
9 |
+
##### [Version 3.2.13](https://github.com/Codeinwp/themeisle-sdk/compare/v3.2.12...v3.2.13) (2020-06-10)
|
10 |
+
|
11 |
+
Adds plan logic and expiration
|
12 |
+
|
13 |
+
##### [Version 3.2.12](https://github.com/Codeinwp/themeisle-sdk/compare/v3.2.11...v3.2.12) (2020-06-10)
|
14 |
+
|
15 |
+
Adds key filter
|
16 |
+
|
17 |
+
##### [Version 3.2.11](https://github.com/Codeinwp/themeisle-sdk/compare/v3.2.10...v3.2.11) (2020-06-04)
|
18 |
+
|
19 |
+
* remove non-printable chars
|
20 |
+
|
21 |
+
##### [Version 3.2.10](https://github.com/Codeinwp/themeisle-sdk/compare/v3.2.9...v3.2.10) (2020-05-28)
|
22 |
+
|
23 |
+
* Remove extra files on export
|
24 |
+
|
25 |
+
##### [Version 3.2.9](https://github.com/Codeinwp/themeisle-sdk/compare/v3.2.8...v3.2.9) (2020-05-18)
|
26 |
+
|
27 |
+
adds new endpoints
|
28 |
+
|
29 |
+
##### [Version 3.2.8](https://github.com/Codeinwp/themeisle-sdk/compare/v3.2.7...v3.2.8) (2020-03-24)
|
30 |
+
|
31 |
+
* change license handler method access
|
32 |
+
|
33 |
+
##### [Version 3.2.7](https://github.com/Codeinwp/themeisle-sdk/compare/v3.2.6...v3.2.7) (2020-03-24)
|
34 |
+
|
35 |
+
* fix callback for license processing hook
|
36 |
+
|
37 |
+
##### [Version 3.2.6](https://github.com/Codeinwp/themeisle-sdk/compare/v3.2.5...v3.2.6) (2020-03-23)
|
38 |
+
|
39 |
+
* Fix notice on license deactivation
|
40 |
+
|
41 |
+
##### [Version 3.2.5](https://github.com/Codeinwp/themeisle-sdk/compare/v3.2.4...v3.2.5) (2020-03-23)
|
42 |
+
|
43 |
+
* always load notification manager last
|
44 |
+
|
45 |
+
##### [Version 3.2.4](https://github.com/Codeinwp/themeisle-sdk/compare/v3.2.3...v3.2.4) (2020-03-21)
|
46 |
+
|
47 |
+
* Cast version response to array for icons
|
48 |
+
|
49 |
+
##### [Version 3.2.3](https://github.com/Codeinwp/themeisle-sdk/compare/v3.2.2...v3.2.3) (2020-03-21)
|
50 |
+
|
51 |
+
* use product slug instead of the one from api
|
52 |
+
|
53 |
+
##### [Version 3.2.2](https://github.com/Codeinwp/themeisle-sdk/compare/v3.2.1...v3.2.2) (2020-03-13)
|
54 |
+
|
55 |
+
* improve notice dismiss mechanism
|
56 |
+
|
57 |
+
##### [Version 3.2.1](https://github.com/Codeinwp/themeisle-sdk/compare/v3.2.0...v3.2.1) (2020-03-05)
|
58 |
+
|
59 |
+
Fix rollback call for private products
|
60 |
+
|
61 |
+
#### [Version 3.2.0](https://github.com/Codeinwp/themeisle-sdk/compare/v3.1.9...v3.2.0) (2020-03-04)
|
62 |
+
|
63 |
+
* adds license activation/deactivation handlers for wp cli
|
64 |
+
* adds compatibility with the newest license API
|
65 |
+
|
66 |
+
##### [Version 3.1.9](https://github.com/Codeinwp/themeisle-sdk/compare/v3.1.8...v3.1.9) (2020-02-24)
|
67 |
+
|
68 |
+
* Add integration with GitHub actions
|
69 |
+
|
70 |
+
## [3.1.8](https://github.com/Codeinwp/themeisle-sdk/compare/v3.1.7...v3.1.8) (2019-11-18)
|
71 |
+
|
72 |
+
|
73 |
+
### Bug Fixes
|
74 |
+
|
75 |
+
* update developers name ([6aca63e](https://github.com/Codeinwp/themeisle-sdk/commit/6aca63e))
|
76 |
+
|
77 |
+
## [3.1.7](https://github.com/Codeinwp/themeisle-sdk/compare/v3.1.6...v3.1.7) (2019-11-07)
|
78 |
+
|
79 |
+
|
80 |
+
### Bug Fixes
|
81 |
+
|
82 |
+
* license field style on wp5.3 ([0239997](https://github.com/Codeinwp/themeisle-sdk/commit/0239997))
|
83 |
+
* license field style on wp5.3 ([86d3a1b](https://github.com/Codeinwp/themeisle-sdk/commit/86d3a1b))
|
84 |
+
|
85 |
+
## [3.1.6](https://github.com/Codeinwp/themeisle-sdk/compare/v3.1.5...v3.1.6) (2019-09-24)
|
86 |
+
|
87 |
+
|
88 |
+
### Bug Fixes
|
89 |
+
|
90 |
+
* remove license related options when deactivated ([02cd6ce](https://github.com/Codeinwp/themeisle-sdk/commit/02cd6ce))
|
91 |
+
* remove license related options when deactivated ([d3c1a1f](https://github.com/Codeinwp/themeisle-sdk/commit/d3c1a1f))
|
92 |
+
|
93 |
+
## [3.1.5](https://github.com/Codeinwp/themeisle-sdk/compare/v3.1.4...v3.1.5) (2019-09-11)
|
94 |
+
|
95 |
+
|
96 |
+
### Bug Fixes
|
97 |
+
|
98 |
+
* allow unloading certain module features ([2a2559a](https://github.com/Codeinwp/themeisle-sdk/commit/2a2559a))
|
99 |
+
* license activation workflow, show error message when failed to a… ([ade795c](https://github.com/Codeinwp/themeisle-sdk/commit/ade795c))
|
100 |
+
* license activation workflow, show error message when failed to activate ([2f5cbae](https://github.com/Codeinwp/themeisle-sdk/commit/2f5cbae))
|
101 |
+
|
102 |
## [3.1.4](https://github.com/Codeinwp/themeisle-sdk/compare/v3.1.3...v3.1.4) (2019-08-23)
|
103 |
|
104 |
|
vendor/codeinwp/themeisle-sdk/load.php
CHANGED
@@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
14 |
return;
|
15 |
}
|
16 |
// Current SDK version and path.
|
17 |
-
$themeisle_sdk_version = '3.
|
18 |
$themeisle_sdk_path = dirname( __FILE__ );
|
19 |
|
20 |
global $themeisle_sdk_max_version;
|
14 |
return;
|
15 |
}
|
16 |
// Current SDK version and path.
|
17 |
+
$themeisle_sdk_version = '3.2.15';
|
18 |
$themeisle_sdk_path = dirname( __FILE__ );
|
19 |
|
20 |
global $themeisle_sdk_max_version;
|
vendor/codeinwp/themeisle-sdk/src/Loader.php
CHANGED
@@ -50,12 +50,11 @@ final class Loader {
|
|
50 |
'rollback',
|
51 |
'uninstall_feedback',
|
52 |
'licenser',
|
53 |
-
'endpoint',
|
54 |
-
'notification',
|
55 |
'logger',
|
56 |
'translate',
|
57 |
'review',
|
58 |
'recommendation',
|
|
|
59 |
|
60 |
];
|
61 |
|
@@ -75,6 +74,28 @@ final class Loader {
|
|
75 |
}
|
76 |
}
|
77 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
78 |
/**
|
79 |
* Register product into SDK.
|
80 |
*
|
50 |
'rollback',
|
51 |
'uninstall_feedback',
|
52 |
'licenser',
|
|
|
|
|
53 |
'logger',
|
54 |
'translate',
|
55 |
'review',
|
56 |
'recommendation',
|
57 |
+
'notification',
|
58 |
|
59 |
];
|
60 |
|
74 |
}
|
75 |
}
|
76 |
|
77 |
+
/**
|
78 |
+
* Get cache token used in API requests.
|
79 |
+
*
|
80 |
+
* @return string Cache token.
|
81 |
+
*/
|
82 |
+
public static function get_cache_token() {
|
83 |
+
$cache_token = get_transient( 'themeisle_sdk_cache_token' );
|
84 |
+
if ( false === $cache_token ) {
|
85 |
+
$cache_token = wp_generate_password( 6, false );
|
86 |
+
set_transient( $cache_token, WEEK_IN_SECONDS );
|
87 |
+
}
|
88 |
+
|
89 |
+
return $cache_token;
|
90 |
+
}
|
91 |
+
|
92 |
+
/**
|
93 |
+
* Clear cache token.
|
94 |
+
*/
|
95 |
+
public static function clear_cache_token() {
|
96 |
+
delete_transient( 'themeisle_sdk_cache_token' );
|
97 |
+
}
|
98 |
+
|
99 |
/**
|
100 |
* Register product into SDK.
|
101 |
*
|
vendor/codeinwp/themeisle-sdk/src/Modules/Dashboard_widget.php
CHANGED
@@ -72,7 +72,9 @@ class Dashboard_Widget extends Abstract_Module {
|
|
72 |
* @return Dashboard_Widget Module instance.
|
73 |
*/
|
74 |
public function load( $product ) {
|
75 |
-
|
|
|
|
|
76 |
$this->product = $product;
|
77 |
$this->dashboard_name = apply_filters( 'themeisle_sdk_dashboard_widget_name', 'WordPress Guides/Tutorials' );
|
78 |
$this->feeds = apply_filters(
|
72 |
* @return Dashboard_Widget Module instance.
|
73 |
*/
|
74 |
public function load( $product ) {
|
75 |
+
if ( apply_filters( 'themeisle_sdk_hide_dashboard_widget', false ) ) {
|
76 |
+
return;
|
77 |
+
}
|
78 |
$this->product = $product;
|
79 |
$this->dashboard_name = apply_filters( 'themeisle_sdk_dashboard_widget_name', 'WordPress Guides/Tutorials' );
|
80 |
$this->feeds = apply_filters(
|
vendor/codeinwp/themeisle-sdk/src/Modules/Endpoint.php
DELETED
@@ -1,358 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* The class that exposes endpoints.
|
4 |
-
*
|
5 |
-
* @package ThemeIsleSDK
|
6 |
-
* @subpackage Rollback
|
7 |
-
* @copyright Copyright (c) 2017, Marius Cristea
|
8 |
-
* @license http://opensource.org/licenses/gpl-3.0.php GNU Public License
|
9 |
-
* @since 1.0.0
|
10 |
-
*/
|
11 |
-
|
12 |
-
namespace ThemeisleSDK\Modules;
|
13 |
-
|
14 |
-
// Exit if accessed directly.
|
15 |
-
use ThemeisleSDK\Common\Abstract_Module;
|
16 |
-
use ThemeisleSDK\Loader;
|
17 |
-
use ThemeisleSDK\Product;
|
18 |
-
|
19 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
20 |
-
exit;
|
21 |
-
}
|
22 |
-
|
23 |
-
/**
|
24 |
-
* Expose endpoints for ThemeIsle SDK.
|
25 |
-
*/
|
26 |
-
class Endpoint extends Abstract_Module {
|
27 |
-
/**
|
28 |
-
* Endpoint slug.
|
29 |
-
*/
|
30 |
-
const SDK_ENDPOINT = 'themeisle-sdk';
|
31 |
-
/**
|
32 |
-
* Endpoint version.
|
33 |
-
*/
|
34 |
-
const SDK_ENDPOINT_VERSION = 1;
|
35 |
-
/**
|
36 |
-
* Hash file which contains the checksum.
|
37 |
-
*/
|
38 |
-
const HASH_FILE = 'themeisle-hash.json';
|
39 |
-
|
40 |
-
/*
|
41 |
-
* If true, the endpoint will expect a product slug and will return the value only for that.
|
42 |
-
*/
|
43 |
-
const PRODUCT_SPECIFIC = false;
|
44 |
-
|
45 |
-
/**
|
46 |
-
* Registers the endpoints.
|
47 |
-
*/
|
48 |
-
function rest_register() {
|
49 |
-
register_rest_route(
|
50 |
-
self::SDK_ENDPOINT . '/v' . self::SDK_ENDPOINT_VERSION,
|
51 |
-
'/checksum/' . ( self::PRODUCT_SPECIFIC ? '(?P<slug>.*)/' : '' ),
|
52 |
-
array(
|
53 |
-
'methods' => 'GET',
|
54 |
-
'callback' => array( $this, 'checksum' ),
|
55 |
-
)
|
56 |
-
);
|
57 |
-
}
|
58 |
-
|
59 |
-
/**
|
60 |
-
* The checksum endpoint.
|
61 |
-
*
|
62 |
-
* @param \WP_REST_Request $data the request.
|
63 |
-
*
|
64 |
-
* @return \WP_REST_Response Response or the error
|
65 |
-
*/
|
66 |
-
function checksum( \WP_REST_Request $data ) {
|
67 |
-
$products = Loader::get_products();
|
68 |
-
if ( self::PRODUCT_SPECIFIC ) {
|
69 |
-
$params = $this->validate_params( $data, array( 'slug' ) );
|
70 |
-
foreach ( $products as $product ) {
|
71 |
-
if ( $params['slug'] === $product->get_slug() ) {
|
72 |
-
$products = array( $product );
|
73 |
-
break;
|
74 |
-
}
|
75 |
-
}
|
76 |
-
}
|
77 |
-
$response = array();
|
78 |
-
$custom_css = $this->has_custom_css();
|
79 |
-
if ( is_bool( $custom_css ) ) {
|
80 |
-
$response['custom_css'] = $custom_css;
|
81 |
-
}
|
82 |
-
|
83 |
-
$response['child_theme'] = $this->get_theme_properties();
|
84 |
-
|
85 |
-
foreach ( $products as $product ) {
|
86 |
-
$files = array();
|
87 |
-
switch ( $product->get_type() ) {
|
88 |
-
case 'plugin':
|
89 |
-
$files = array();
|
90 |
-
break;
|
91 |
-
case 'theme':
|
92 |
-
$files = array( 'style.css', 'functions.php' );
|
93 |
-
break;
|
94 |
-
}
|
95 |
-
|
96 |
-
$error = '';
|
97 |
-
|
98 |
-
// if any element in the $files array contains a '/', this would imply recursion is required.
|
99 |
-
$diff = $this->generate_diff(
|
100 |
-
$product,
|
101 |
-
$files,
|
102 |
-
array_reduce(
|
103 |
-
$files,
|
104 |
-
array(
|
105 |
-
$this,
|
106 |
-
'is_recursion_required',
|
107 |
-
),
|
108 |
-
false
|
109 |
-
)
|
110 |
-
);
|
111 |
-
if ( is_wp_error( $diff ) ) {
|
112 |
-
/**
|
113 |
-
* Error returner by the diff checker method.
|
114 |
-
*
|
115 |
-
* @var \WP_Error $diff Error returned.
|
116 |
-
*/
|
117 |
-
$error = $diff->get_error_message();
|
118 |
-
$diff = array();
|
119 |
-
}
|
120 |
-
|
121 |
-
$response['products'][] = array(
|
122 |
-
'slug' => $product->get_slug(),
|
123 |
-
'version' => $product->get_version(),
|
124 |
-
'diffs' => $diff,
|
125 |
-
'error' => $error,
|
126 |
-
);
|
127 |
-
}
|
128 |
-
|
129 |
-
return new \WP_REST_Response( array( 'checksum' => $response ) );
|
130 |
-
}
|
131 |
-
|
132 |
-
/**
|
133 |
-
* Validates the parameters to the API
|
134 |
-
*
|
135 |
-
* @param \WP_REST_Request $data the request.
|
136 |
-
* @param array $params the parameters to validate.
|
137 |
-
*
|
138 |
-
* @return array of parameter name=>value
|
139 |
-
*/
|
140 |
-
private function validate_params( \WP_REST_Request $data, $params ) {
|
141 |
-
$collect = array();
|
142 |
-
foreach ( $params as $param ) {
|
143 |
-
$value = sanitize_text_field( $data[ $param ] );
|
144 |
-
if ( empty( $value ) ) {
|
145 |
-
return rest_ensure_response(
|
146 |
-
new \WP_Error(
|
147 |
-
'themeisle_' . $param . '_invalid',
|
148 |
-
sprintf( 'Invalid %', $param ),
|
149 |
-
array(
|
150 |
-
'status' => 403,
|
151 |
-
)
|
152 |
-
)
|
153 |
-
);
|
154 |
-
} else {
|
155 |
-
$collect[ $param ] = $value;
|
156 |
-
}
|
157 |
-
}
|
158 |
-
|
159 |
-
return $collect;
|
160 |
-
}
|
161 |
-
|
162 |
-
/**
|
163 |
-
* Check if custom css has been added to the theme.
|
164 |
-
*
|
165 |
-
* @return bool Whether custom css has been added to the theme.
|
166 |
-
*/
|
167 |
-
private function has_custom_css() {
|
168 |
-
$query = new \WP_Query(
|
169 |
-
array(
|
170 |
-
'post_type' => 'custom_css',
|
171 |
-
'post_status' => 'publish',
|
172 |
-
'numberposts' => 1,
|
173 |
-
'update_post_meta_cache' => false,
|
174 |
-
'update_post_term_cache' => false,
|
175 |
-
)
|
176 |
-
);
|
177 |
-
|
178 |
-
if ( $query->have_posts() ) {
|
179 |
-
$query->the_post();
|
180 |
-
$content = get_the_content();
|
181 |
-
|
182 |
-
// if the content contains a colon, a CSS rule has been added.
|
183 |
-
return strpos( $content, ':' ) === false ? false : true;
|
184 |
-
}
|
185 |
-
|
186 |
-
return false;
|
187 |
-
}
|
188 |
-
|
189 |
-
/**
|
190 |
-
* Get the current theme properties.
|
191 |
-
*
|
192 |
-
* @return mixed Properties of the current theme.
|
193 |
-
*/
|
194 |
-
function get_theme_properties() {
|
195 |
-
if ( ! is_child_theme() ) {
|
196 |
-
return false;
|
197 |
-
}
|
198 |
-
|
199 |
-
$properties = array();
|
200 |
-
$theme = wp_get_theme();
|
201 |
-
// @codingStandardsIgnoreStart
|
202 |
-
$properties['name'] = $theme->Name;
|
203 |
-
// @codingStandardsIgnoreEnd
|
204 |
-
|
205 |
-
// get the files in the child theme.
|
206 |
-
require_once( ABSPATH . 'wp-admin/includes/file.php' );
|
207 |
-
WP_Filesystem();
|
208 |
-
global $wp_filesystem;
|
209 |
-
$path = str_replace( ABSPATH, $wp_filesystem->abspath(), get_stylesheet_directory() );
|
210 |
-
$list = $wp_filesystem->dirlist( $path, false, false );
|
211 |
-
if ( $list ) {
|
212 |
-
$list = array_keys( self::flatten_dirlist( $list ) );
|
213 |
-
$properties['files'] = $list;
|
214 |
-
}
|
215 |
-
|
216 |
-
return $properties;
|
217 |
-
}
|
218 |
-
|
219 |
-
/**
|
220 |
-
* Flatten the results of WP_Filesystem::dirlist() for iterating over.
|
221 |
-
*
|
222 |
-
* @access private
|
223 |
-
*
|
224 |
-
* @param array $nested_files Array of files as returned by WP_Filesystem::dirlist().
|
225 |
-
* @param string $path Relative path to prepend to child nodes. Optional.
|
226 |
-
*
|
227 |
-
* @return array $files A flattened array of the $nested_files specified.
|
228 |
-
*/
|
229 |
-
private static function flatten_dirlist( $nested_files, $path = '' ) {
|
230 |
-
$files = array();
|
231 |
-
foreach ( $nested_files as $name => $details ) {
|
232 |
-
$files[ $path . $name ] = $details;
|
233 |
-
// Append children recursively.
|
234 |
-
if ( ! empty( $details['files'] ) ) {
|
235 |
-
$children = self::flatten_dirlist( $details['files'], $path . $name . '/' );
|
236 |
-
// Merge keeping possible numeric keys, which array_merge() will reindex from 0..n.
|
237 |
-
$files = $files + $children;
|
238 |
-
}
|
239 |
-
}
|
240 |
-
|
241 |
-
return $files;
|
242 |
-
}
|
243 |
-
|
244 |
-
/**
|
245 |
-
* Generate the diff of the files.
|
246 |
-
*
|
247 |
-
* @param Product $product Themeisle Product.
|
248 |
-
* @param array $files Array of files.
|
249 |
-
* @param bool $recurse Whether to recurse or not.
|
250 |
-
*
|
251 |
-
* @return mixed Diff data.
|
252 |
-
*/
|
253 |
-
private function generate_diff( $product, $files, $recurse = false ) {
|
254 |
-
require_once( ABSPATH . 'wp-admin/includes/file.php' );
|
255 |
-
WP_Filesystem();
|
256 |
-
global $wp_filesystem;
|
257 |
-
|
258 |
-
$diff = array();
|
259 |
-
$path = str_replace( ABSPATH, $wp_filesystem->abspath(), plugin_dir_path( $product->get_basefile() ) );
|
260 |
-
$list = $wp_filesystem->dirlist( $path, false, $recurse );
|
261 |
-
// nothing found.
|
262 |
-
if ( ! $list ) {
|
263 |
-
return $diff;
|
264 |
-
}
|
265 |
-
$list = array_keys( self::flatten_dirlist( $list ) );
|
266 |
-
|
267 |
-
// now let's get the valid files that actually exist.
|
268 |
-
if ( empty( $files ) ) {
|
269 |
-
$files = $list;
|
270 |
-
} else {
|
271 |
-
$files = array_intersect( $files, $list );
|
272 |
-
}
|
273 |
-
|
274 |
-
// fetch the calculated hashes.
|
275 |
-
if ( ! $wp_filesystem->is_readable( $path . '/' . self::HASH_FILE ) ) {
|
276 |
-
return new \WP_Error( 'themeisle_sdk_hash_not_found', sprintf( '%s not found', self::HASH_FILE ) );
|
277 |
-
}
|
278 |
-
|
279 |
-
$hashes = json_decode( $wp_filesystem->get_contents( $path . '/' . self::HASH_FILE ), true );
|
280 |
-
ksort( $hashes );
|
281 |
-
|
282 |
-
$diff = array();
|
283 |
-
foreach ( $files as $file ) {
|
284 |
-
// file does not exist in the hashes.
|
285 |
-
if ( ! array_key_exists( $file, $hashes ) ) {
|
286 |
-
continue;
|
287 |
-
}
|
288 |
-
$new = md5( $wp_filesystem->get_contents( $path . $file ) );
|
289 |
-
$old = $hashes[ $file ];
|
290 |
-
|
291 |
-
// same hash, bail.
|
292 |
-
if ( $new === $old ) {
|
293 |
-
continue;
|
294 |
-
}
|
295 |
-
$diff[] = $file;
|
296 |
-
}
|
297 |
-
|
298 |
-
return $diff;
|
299 |
-
}
|
300 |
-
|
301 |
-
/**
|
302 |
-
* Check if recursion needs to be enabled on the WP_Filesystem by reducing the array of files to a boolean.
|
303 |
-
*
|
304 |
-
* @param string $carry Value of the previous iteration.
|
305 |
-
* @param string $item Value of the current iteration.
|
306 |
-
*
|
307 |
-
* @return bool Whether to recurse or not.
|
308 |
-
*/
|
309 |
-
function is_recursion_required( $carry, $item ) {
|
310 |
-
if ( ! $carry ) {
|
311 |
-
return ( strpos( $item, '/' ) !== false );
|
312 |
-
}
|
313 |
-
|
314 |
-
return $carry;
|
315 |
-
}
|
316 |
-
|
317 |
-
/**
|
318 |
-
* Load module for this product.
|
319 |
-
*
|
320 |
-
* @param Product $product Product to check.
|
321 |
-
*
|
322 |
-
* @return bool Should we load this?
|
323 |
-
*/
|
324 |
-
public function can_load( $product ) {
|
325 |
-
return true;
|
326 |
-
}
|
327 |
-
|
328 |
-
/**
|
329 |
-
* Load module logic.
|
330 |
-
*
|
331 |
-
* @param Product $product Product to load.
|
332 |
-
*/
|
333 |
-
public function load( $product ) {
|
334 |
-
$this->setup_endpoints();
|
335 |
-
|
336 |
-
return $this;
|
337 |
-
}
|
338 |
-
|
339 |
-
/**
|
340 |
-
* Setup endpoints.
|
341 |
-
*/
|
342 |
-
private function setup_endpoints() {
|
343 |
-
global $wp_version;
|
344 |
-
if ( version_compare( $wp_version, '4.4', '<' ) ) {
|
345 |
-
// no REST support.
|
346 |
-
return;
|
347 |
-
}
|
348 |
-
|
349 |
-
$this->setup_rest();
|
350 |
-
}
|
351 |
-
|
352 |
-
/**
|
353 |
-
* Setup REST endpoints.
|
354 |
-
*/
|
355 |
-
private function setup_rest() {
|
356 |
-
add_action( 'rest_api_init', array( $this, 'rest_register' ) );
|
357 |
-
}
|
358 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/codeinwp/themeisle-sdk/src/Modules/Licenser.php
CHANGED
@@ -13,6 +13,7 @@ namespace ThemeisleSDK\Modules;
|
|
13 |
|
14 |
// Exit if accessed directly.
|
15 |
use ThemeisleSDK\Common\Abstract_Module;
|
|
|
16 |
use ThemeisleSDK\Product;
|
17 |
|
18 |
if ( ! defined( 'ABSPATH' ) ) {
|
@@ -55,6 +56,13 @@ class Licenser extends Abstract_Module {
|
|
55 |
*/
|
56 |
private $product_key;
|
57 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
/**
|
59 |
* Disable wporg updates for premium products.
|
60 |
*
|
@@ -89,6 +97,9 @@ class Licenser extends Abstract_Module {
|
|
89 |
if ( ! is_admin() ) {
|
90 |
return false;
|
91 |
}
|
|
|
|
|
|
|
92 |
add_settings_field(
|
93 |
$this->product->get_key() . '_license',
|
94 |
$this->product->get_name() . ' license',
|
@@ -109,6 +120,7 @@ class Licenser extends Abstract_Module {
|
|
109 |
$valid_string = apply_filters( $this->product->get_key() . '_lc_valid_string', 'Valid' );
|
110 |
$invalid_string = apply_filters( $this->product->get_key() . '_lc_invalid_string', 'Invalid' );
|
111 |
$license_message = apply_filters( $this->product->get_key() . '_lc_license_message', 'Enter your license from %s purchase history in order to get %s updates' );
|
|
|
112 |
?>
|
113 |
<style type="text/css">
|
114 |
input.themeisle-sdk-text-input-valid {
|
@@ -117,7 +129,9 @@ class Licenser extends Abstract_Module {
|
|
117 |
|
118 |
input.themeisle-sdk-license-input {
|
119 |
width: 300px;
|
120 |
-
padding:
|
|
|
|
|
121 |
}
|
122 |
|
123 |
.themeisle-sdk-license-deactivate-cta {
|
@@ -157,7 +171,7 @@ class Licenser extends Abstract_Module {
|
|
157 |
</style>
|
158 |
<?php
|
159 |
echo sprintf(
|
160 |
-
'<p>%s<input class="themeisle-sdk-license-input %s" type="text" id="%s_license" name="%s_license" value="%s" /><a class="%s">%s</a> <button name="%s_btn_trigger" class="button button-primary themeisle-sdk-licenser-button-cta" value="yes" type="submit" >%s</button></p><p class="description">%s</p
|
161 |
( ( 'valid' === $status ) ? sprintf( '<input type="hidden" value="%s" name="%s_license" />', $value, $this->product->get_key() ) : '' ),
|
162 |
( ( 'valid' === $status ) ? 'themeisle-sdk-text-input-valid' : '' ),
|
163 |
$this->product->get_key(),
|
@@ -167,7 +181,8 @@ class Licenser extends Abstract_Module {
|
|
167 |
( 'valid' === $status ? $valid_string : $invalid_string ),
|
168 |
$this->product->get_key(),
|
169 |
( 'valid' === $status ? $deactivate_string : $activate_string ),
|
170 |
-
sprintf( $license_message, '<a href="' . $this->get_api_url() . '">' . $this->get_distributor_name() . '</a> ', $this->product->get_type() )
|
|
|
171 |
);
|
172 |
|
173 |
}
|
@@ -175,18 +190,37 @@ class Licenser extends Abstract_Module {
|
|
175 |
/**
|
176 |
* Return the license status.
|
177 |
*
|
|
|
|
|
178 |
* @return string The License status.
|
179 |
*/
|
180 |
-
public function get_license_status() {
|
181 |
|
182 |
$license_data = get_option( $this->product->get_key() . '_license_data', '' );
|
183 |
|
184 |
if ( '' === $license_data ) {
|
185 |
return get_option( $this->product->get_key() . '_license_status', 'not_active' );
|
186 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
187 |
|
188 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
189 |
|
|
|
190 |
}
|
191 |
|
192 |
/**
|
@@ -224,10 +258,15 @@ class Licenser extends Abstract_Module {
|
|
224 |
if ( ! is_admin() ) {
|
225 |
return false;
|
226 |
}
|
227 |
-
$status = $this->get_license_status();
|
228 |
-
$no_activations_string = apply_filters( $this->product->get_key() . '_lc_no_activations_string', 'No activations left for %s !!!. You need to upgrade your plan in order to use %s on more websites. Please ask the %s Staff for more details.' );
|
229 |
-
$no_valid_string = apply_filters( $this->product->get_key() . '_lc_no_valid_string', 'In order to benefit from updates and support for %s, please add your license code from your <a href="%s" target="_blank">purchase history</a> and validate it <a href="%s">here</a>. ' );
|
230 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
231 |
// No activations left for this license.
|
232 |
if ( 'valid' != $status && $this->check_activation() ) {
|
233 |
?>
|
@@ -247,6 +286,19 @@ class Licenser extends Abstract_Module {
|
|
247 |
<?php
|
248 |
return false;
|
249 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
250 |
// Invalid license key.
|
251 |
if ( 'valid' != $status ) {
|
252 |
?>
|
@@ -274,7 +326,7 @@ class Licenser extends Abstract_Module {
|
|
274 |
return false;
|
275 |
}
|
276 |
|
277 |
-
return isset( $license_data->
|
278 |
|
279 |
}
|
280 |
|
@@ -334,40 +386,26 @@ class Licenser extends Abstract_Module {
|
|
334 |
*/
|
335 |
public function check_license() {
|
336 |
$status = $this->get_license_status();
|
337 |
-
if ( 'not_active'
|
338 |
$license_data = new \stdClass();
|
339 |
$license_data->license = 'not_active';
|
340 |
|
341 |
return $license_data;
|
342 |
}
|
343 |
-
$license
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
'item_name' => rawurlencode( $this->product->get_name() ),
|
348 |
-
'url' => rawurlencode( home_url() ),
|
349 |
-
);
|
350 |
-
// Call the custom API.
|
351 |
-
$response = wp_remote_get(
|
352 |
-
add_query_arg( $api_params, $this->get_api_url() ),
|
353 |
-
array(
|
354 |
-
'timeout' => 15,
|
355 |
-
'sslverify' => false,
|
356 |
-
)
|
357 |
-
);
|
358 |
if ( is_wp_error( $response ) ) {
|
359 |
$license_data = new \stdClass();
|
360 |
$license_data->license = 'valid';
|
361 |
-
|
362 |
} else {
|
363 |
-
$license_data =
|
364 |
-
if ( ! is_object( $license_data ) ) {
|
365 |
-
$license_data = new \stdClass();
|
366 |
-
$license_data->license = 'valid';
|
367 |
-
}
|
368 |
}
|
|
|
369 |
$license_old = get_option( $this->product->get_key() . '_license_data', '' );
|
370 |
-
|
|
|
371 |
$this->increment_failed_checks();
|
372 |
} else {
|
373 |
$this->reset_failed_checks();
|
@@ -377,22 +415,10 @@ class Licenser extends Abstract_Module {
|
|
377 |
return $license_old;
|
378 |
}
|
379 |
|
380 |
-
if ( isset( $license_old->hide_valid ) ) {
|
381 |
-
$license_data->hide_valid = true;
|
382 |
-
}
|
383 |
-
|
384 |
if ( ! isset( $license_data->key ) ) {
|
385 |
$license_data->key = isset( $license_old->key ) ? $license_old->key : '';
|
386 |
}
|
387 |
|
388 |
-
if ( isset( $license_old->hide_expiration ) ) {
|
389 |
-
$license_data->hide_expiration = true;
|
390 |
-
}
|
391 |
-
|
392 |
-
if ( isset( $license_old->hide_activation ) ) {
|
393 |
-
$license_data->hide_activation = true;
|
394 |
-
}
|
395 |
-
|
396 |
return $license_data;
|
397 |
|
398 |
}
|
@@ -414,58 +440,136 @@ class Licenser extends Abstract_Module {
|
|
414 |
}
|
415 |
|
416 |
/**
|
417 |
-
*
|
|
|
|
|
418 |
*/
|
419 |
-
function
|
420 |
-
|
421 |
-
|
422 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
423 |
}
|
424 |
$status = $this->get_license_status();
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
'
|
431 |
-
);
|
432 |
-
if ( 'valid' != $status ) {
|
433 |
-
// data to send in our API request.
|
434 |
-
$api_params['edd_action'] = 'activate_license';
|
435 |
-
} else {
|
436 |
-
$api_params['edd_action'] = 'deactivate_license';
|
437 |
}
|
|
|
|
|
|
|
|
|
|
|
438 |
// Call the custom API.
|
439 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
440 |
// make sure the response came back okay.
|
441 |
if ( is_wp_error( $response ) ) {
|
442 |
-
|
443 |
-
|
444 |
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
|
|
|
|
|
|
|
|
454 |
}
|
|
|
455 |
if ( ! isset( $license_data->key ) ) {
|
456 |
$license_data->key = $license;
|
457 |
}
|
458 |
-
if ( 'valid'
|
459 |
$this->reset_failed_checks();
|
460 |
}
|
461 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
462 |
if ( isset( $license_data->plan ) ) {
|
463 |
update_option( $this->product->get_key() . '_license_plan', $license_data->plan );
|
464 |
}
|
465 |
-
|
466 |
update_option( $this->product->get_key() . '_license_data', $license_data );
|
467 |
set_transient( $this->product->get_key() . '_license_data', $license_data, 12 * HOUR_IN_SECONDS );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
468 |
|
|
|
469 |
}
|
470 |
|
471 |
/**
|
@@ -564,17 +668,16 @@ class Licenser extends Abstract_Module {
|
|
564 |
* @return bool|mixed Update api response.
|
565 |
*/
|
566 |
private function get_version_data() {
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
add_query_arg( $api_params, $this->get_api_url() ),
|
578 |
array(
|
579 |
'timeout' => 15,
|
580 |
'sslverify' => false,
|
@@ -587,6 +690,15 @@ class Licenser extends Abstract_Module {
|
|
587 |
if ( ! is_object( $update_data ) ) {
|
588 |
return false;
|
589 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
590 |
|
591 |
return $update_data;
|
592 |
}
|
@@ -651,7 +763,7 @@ class Licenser extends Abstract_Module {
|
|
651 |
* @return object $_data
|
652 |
*/
|
653 |
public function plugins_api_filter( $_data, $_action = '', $_args = null ) {
|
654 |
-
if ( ( 'plugin_information'
|
655 |
return $_data;
|
656 |
}
|
657 |
$api_response = $this->api_request();
|
@@ -714,6 +826,21 @@ class Licenser extends Abstract_Module {
|
|
714 |
$this->register_license_hooks();
|
715 |
}
|
716 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
717 |
if ( $this->product->is_plugin() ) {
|
718 |
add_filter(
|
719 |
'pre_set_site_transient_update_plugins',
|
@@ -742,12 +869,133 @@ class Licenser extends Abstract_Module {
|
|
742 |
return $this;
|
743 |
}
|
744 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
745 |
/**
|
746 |
* Register license fields for the products.
|
747 |
*/
|
748 |
public function register_license_hooks() {
|
749 |
add_action( 'admin_init', array( $this, 'register_settings' ) );
|
750 |
-
add_action( 'admin_init', array( $this, '
|
751 |
add_action( 'admin_init', array( $this, 'product_valid' ), 99999999 );
|
752 |
add_action( 'admin_notices', array( $this, 'show_notice' ) );
|
753 |
add_filter( $this->product->get_key() . '_license_status', array( $this, 'get_license_status' ) );
|
13 |
|
14 |
// Exit if accessed directly.
|
15 |
use ThemeisleSDK\Common\Abstract_Module;
|
16 |
+
use ThemeisleSDK\Loader;
|
17 |
use ThemeisleSDK\Product;
|
18 |
|
19 |
if ( ! defined( 'ABSPATH' ) ) {
|
56 |
*/
|
57 |
private $product_key;
|
58 |
|
59 |
+
/**
|
60 |
+
* Holds local license object.
|
61 |
+
*
|
62 |
+
* @var null Local license object.
|
63 |
+
*/
|
64 |
+
private $license_local = null;
|
65 |
+
|
66 |
/**
|
67 |
* Disable wporg updates for premium products.
|
68 |
*
|
97 |
if ( ! is_admin() ) {
|
98 |
return false;
|
99 |
}
|
100 |
+
if ( apply_filters( $this->product->get_key() . '_hide_license_field', false ) ) {
|
101 |
+
return;
|
102 |
+
}
|
103 |
add_settings_field(
|
104 |
$this->product->get_key() . '_license',
|
105 |
$this->product->get_name() . ' license',
|
120 |
$valid_string = apply_filters( $this->product->get_key() . '_lc_valid_string', 'Valid' );
|
121 |
$invalid_string = apply_filters( $this->product->get_key() . '_lc_invalid_string', 'Invalid' );
|
122 |
$license_message = apply_filters( $this->product->get_key() . '_lc_license_message', 'Enter your license from %s purchase history in order to get %s updates' );
|
123 |
+
$error_message = $this->get_error();
|
124 |
?>
|
125 |
<style type="text/css">
|
126 |
input.themeisle-sdk-text-input-valid {
|
129 |
|
130 |
input.themeisle-sdk-license-input {
|
131 |
width: 300px;
|
132 |
+
padding: 0 8px;
|
133 |
+
line-height: 2;
|
134 |
+
min-height: 30px;
|
135 |
}
|
136 |
|
137 |
.themeisle-sdk-license-deactivate-cta {
|
171 |
</style>
|
172 |
<?php
|
173 |
echo sprintf(
|
174 |
+
'<p>%s<input class="themeisle-sdk-license-input %s" type="text" id="%s_license" name="%s_license" value="%s" /><a class="%s">%s</a> <button name="%s_btn_trigger" class="button button-primary themeisle-sdk-licenser-button-cta" value="yes" type="submit" >%s</button></p><p class="description">%s</p>%s',
|
175 |
( ( 'valid' === $status ) ? sprintf( '<input type="hidden" value="%s" name="%s_license" />', $value, $this->product->get_key() ) : '' ),
|
176 |
( ( 'valid' === $status ) ? 'themeisle-sdk-text-input-valid' : '' ),
|
177 |
$this->product->get_key(),
|
181 |
( 'valid' === $status ? $valid_string : $invalid_string ),
|
182 |
$this->product->get_key(),
|
183 |
( 'valid' === $status ? $deactivate_string : $activate_string ),
|
184 |
+
sprintf( $license_message, '<a href="' . $this->get_api_url() . '">' . $this->get_distributor_name() . '</a> ', $this->product->get_type() ),
|
185 |
+
empty( $error_message ) ? '' : sprintf( '<p style="color:#dd3d36">%s</p>', $error_message )
|
186 |
);
|
187 |
|
188 |
}
|
190 |
/**
|
191 |
* Return the license status.
|
192 |
*
|
193 |
+
* @param bool $check_expiration Should check if license is valid, but expired.
|
194 |
+
*
|
195 |
* @return string The License status.
|
196 |
*/
|
197 |
+
public function get_license_status( $check_expiration = false ) {
|
198 |
|
199 |
$license_data = get_option( $this->product->get_key() . '_license_data', '' );
|
200 |
|
201 |
if ( '' === $license_data ) {
|
202 |
return get_option( $this->product->get_key() . '_license_status', 'not_active' );
|
203 |
}
|
204 |
+
$status = isset( $license_data->license ) ? $license_data->license : get_option( $this->product->get_key() . '_license_status', 'not_active' );
|
205 |
+
if ( false === $check_expiration ) {
|
206 |
+
return $status;
|
207 |
+
}
|
208 |
+
|
209 |
+
return ( 'valid' === $status && isset( $license_data->is_expired ) && 'yes' === $license_data->is_expired ) ? 'active_expired' : $status;
|
210 |
+
}
|
211 |
|
212 |
+
/**
|
213 |
+
* License price id.
|
214 |
+
*
|
215 |
+
* @return int License plan.
|
216 |
+
*/
|
217 |
+
public function get_plan() {
|
218 |
+
$license_data = get_option( $this->product->get_key() . '_license_data', '' );
|
219 |
+
if ( ! isset( $license_data->price_id ) ) {
|
220 |
+
return -1;
|
221 |
+
}
|
222 |
|
223 |
+
return (int) $license_data->price_id;
|
224 |
}
|
225 |
|
226 |
/**
|
258 |
if ( ! is_admin() ) {
|
259 |
return false;
|
260 |
}
|
|
|
|
|
|
|
261 |
|
262 |
+
if ( apply_filters( $this->product->get_key() . '_hide_license_notices', false ) ) {
|
263 |
+
return false;
|
264 |
+
}
|
265 |
+
|
266 |
+
$status = $this->get_license_status( true );
|
267 |
+
$no_activations_string = apply_filters( $this->product->get_key() . '_lc_no_activations_string', 'No more activations left for %s. You need to upgrade your plan in order to use %s on more websites. If you need assistance, please get in touch with %s staff.' );
|
268 |
+
$no_valid_string = apply_filters( $this->product->get_key() . '_lc_no_valid_string', 'In order to benefit from updates and support for %s, please add your license code from your <a href="%s" target="_blank">purchase history</a> and validate it <a href="%s">here</a>. ' );
|
269 |
+
$expired_license_string = apply_filters( $this->product->get_key() . '_lc_expired_string', 'Your %s License Key has expired. In order to continue receiving support and software updates you must <a href="%s" target="_blank">renew</a> your license key.' );
|
270 |
// No activations left for this license.
|
271 |
if ( 'valid' != $status && $this->check_activation() ) {
|
272 |
?>
|
286 |
<?php
|
287 |
return false;
|
288 |
}
|
289 |
+
|
290 |
+
// Invalid license key.
|
291 |
+
if ( 'active_expired' === $status ) {
|
292 |
+
?>
|
293 |
+
<div class="error">
|
294 |
+
<p>
|
295 |
+
<strong><?php echo sprintf( $expired_license_string, $this->product->get_name() . ' ' . $this->product->get_type(), $this->get_api_url() . '?license=' . $this->license_key ); ?> </strong>
|
296 |
+
</p>
|
297 |
+
</div>
|
298 |
+
<?php
|
299 |
+
|
300 |
+
return false;
|
301 |
+
}
|
302 |
// Invalid license key.
|
303 |
if ( 'valid' != $status ) {
|
304 |
?>
|
326 |
return false;
|
327 |
}
|
328 |
|
329 |
+
return isset( $license_data->license ) ? ( 'no_activations_left' == $license_data->license ) : false;
|
330 |
|
331 |
}
|
332 |
|
386 |
*/
|
387 |
public function check_license() {
|
388 |
$status = $this->get_license_status();
|
389 |
+
if ( 'not_active' === $status ) {
|
390 |
$license_data = new \stdClass();
|
391 |
$license_data->license = 'not_active';
|
392 |
|
393 |
return $license_data;
|
394 |
}
|
395 |
+
$license = trim( $this->license_key );
|
396 |
+
|
397 |
+
$response = $this->do_license_process( $license, 'check' );
|
398 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
399 |
if ( is_wp_error( $response ) ) {
|
400 |
$license_data = new \stdClass();
|
401 |
$license_data->license = 'valid';
|
|
|
402 |
} else {
|
403 |
+
$license_data = $response;
|
|
|
|
|
|
|
|
|
404 |
}
|
405 |
+
|
406 |
$license_old = get_option( $this->product->get_key() . '_license_data', '' );
|
407 |
+
|
408 |
+
if ( 'valid' === $license_old->license && ( $license_data->license !== $license_old->license ) ) {
|
409 |
$this->increment_failed_checks();
|
410 |
} else {
|
411 |
$this->reset_failed_checks();
|
415 |
return $license_old;
|
416 |
}
|
417 |
|
|
|
|
|
|
|
|
|
418 |
if ( ! isset( $license_data->key ) ) {
|
419 |
$license_data->key = isset( $license_old->key ) ? $license_old->key : '';
|
420 |
}
|
421 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
422 |
return $license_data;
|
423 |
|
424 |
}
|
440 |
}
|
441 |
|
442 |
/**
|
443 |
+
* Set license validation error message.
|
444 |
+
*
|
445 |
+
* @param string $message Error message.
|
446 |
*/
|
447 |
+
public function set_error( $message = '' ) {
|
448 |
+
set_transient( $this->product->get_key() . 'act_err', $message, MINUTE_IN_SECONDS );
|
449 |
+
|
450 |
+
return;
|
451 |
+
}
|
452 |
+
|
453 |
+
/**
|
454 |
+
* Return the last error message.
|
455 |
+
*
|
456 |
+
* @return mixed Error message.
|
457 |
+
*/
|
458 |
+
public function get_error() {
|
459 |
+
return get_transient( $this->product->get_key() . 'act_err' );
|
460 |
+
}
|
461 |
+
|
462 |
+
/**
|
463 |
+
* Do license activation/deactivation.
|
464 |
+
*
|
465 |
+
* @param string $license License key.
|
466 |
+
* @param string $action What do to.
|
467 |
+
*
|
468 |
+
* @return bool|\WP_Error
|
469 |
+
*/
|
470 |
+
public function do_license_process( $license, $action = 'toggle' ) {
|
471 |
+
if ( strlen( $license ) < 10 ) {
|
472 |
+
return new \WP_Error( 'themeisle-license-invalid-format', 'Invalid license.' );
|
473 |
}
|
474 |
$status = $this->get_license_status();
|
475 |
+
|
476 |
+
if ( 'valid' === $status && 'activate' === $action ) {
|
477 |
+
return new \WP_Error( 'themeisle-license-already-active', 'License is already active.' );
|
478 |
+
}
|
479 |
+
if ( 'valid' !== $status && 'deactivate' === $action ) {
|
480 |
+
return new \WP_Error( 'themeisle-license-already-deactivate', 'License not active.' );
|
|
|
|
|
|
|
|
|
|
|
|
|
481 |
}
|
482 |
+
|
483 |
+
if ( 'toggle' === $action ) {
|
484 |
+
$action = ( 'valid' !== $status ? ( 'activate' ) : ( 'deactivate' ) );
|
485 |
+
}
|
486 |
+
|
487 |
// Call the custom API.
|
488 |
+
if ( 'check' === $action ) {
|
489 |
+
$response = wp_remote_get( sprintf( '%slicense/check/%s/%s/%s/%s', Product::API_URL, rawurlencode( $this->product->get_name() ), $license, rawurlencode( home_url() ), Loader::get_cache_token() ) );
|
490 |
+
} else {
|
491 |
+
$response = wp_remote_post(
|
492 |
+
sprintf( '%slicense/%s/%s/%s', Product::API_URL, $action, rawurlencode( $this->product->get_name() ), $license ),
|
493 |
+
array(
|
494 |
+
'body' => wp_json_encode(
|
495 |
+
array(
|
496 |
+
'url' => rawurlencode( home_url() ),
|
497 |
+
)
|
498 |
+
),
|
499 |
+
'headers' => array(
|
500 |
+
'Content-Type' => 'application/json',
|
501 |
+
),
|
502 |
+
)
|
503 |
+
);
|
504 |
+
}
|
505 |
+
|
506 |
// make sure the response came back okay.
|
507 |
if ( is_wp_error( $response ) ) {
|
508 |
+
return new \WP_Error( 'themeisle-license-500', sprintf( 'ERROR: Failed to connect to the license service. Please try again later. Reason: %s', $response->get_error_message() ) );
|
509 |
+
}
|
510 |
|
511 |
+
$license_data = json_decode( wp_remote_retrieve_body( $response ) );
|
512 |
+
|
513 |
+
if ( ! is_object( $license_data ) ) {
|
514 |
+
return new \WP_Error( 'themeisle-license-404', 'ERROR: Failed to validate license. Please try again in one minute.' );
|
515 |
+
}
|
516 |
+
if ( 'check' === $action ) {
|
517 |
+
return $license_data;
|
518 |
+
}
|
519 |
+
|
520 |
+
Loader::clear_cache_token();
|
521 |
+
|
522 |
+
if ( ! isset( $license_data->license ) ) {
|
523 |
+
$license_data->license = 'invalid';
|
524 |
}
|
525 |
+
|
526 |
if ( ! isset( $license_data->key ) ) {
|
527 |
$license_data->key = $license;
|
528 |
}
|
529 |
+
if ( 'valid' === $license_data->license ) {
|
530 |
$this->reset_failed_checks();
|
531 |
}
|
532 |
|
533 |
+
if ( 'deactivate' === $action ) {
|
534 |
+
|
535 |
+
delete_option( $this->product->get_key() . '_license_data' );
|
536 |
+
delete_option( $this->product->get_key() . '_license_plan' );
|
537 |
+
delete_transient( $this->product->get_key() . '_license_data' );
|
538 |
+
|
539 |
+
return true;
|
540 |
+
}
|
541 |
if ( isset( $license_data->plan ) ) {
|
542 |
update_option( $this->product->get_key() . '_license_plan', $license_data->plan );
|
543 |
}
|
|
|
544 |
update_option( $this->product->get_key() . '_license_data', $license_data );
|
545 |
set_transient( $this->product->get_key() . '_license_data', $license_data, 12 * HOUR_IN_SECONDS );
|
546 |
+
if ( 'activate' === $action && 'valid' !== $license_data->license ) {
|
547 |
+
return new \WP_Error( 'themeisle-license-invalid', 'ERROR: Invalid license provided.' );
|
548 |
+
}
|
549 |
+
|
550 |
+
return true;
|
551 |
+
}
|
552 |
+
|
553 |
+
/**
|
554 |
+
* Activate the license remotely.
|
555 |
+
*/
|
556 |
+
function process_license() {
|
557 |
+
// listen for our activate button to be clicked.
|
558 |
+
if ( ! isset( $_POST[ $this->product->get_key() . '_btn_trigger' ] ) ) {
|
559 |
+
return;
|
560 |
+
}
|
561 |
+
$license = $_POST[ $this->product->get_key() . '_license' ];
|
562 |
+
$response = $this->do_license_process( $license, 'toggle' );
|
563 |
+
if ( is_wp_error( $response ) ) {
|
564 |
+
$this->set_error( $response->get_error_message() );
|
565 |
+
|
566 |
+
return;
|
567 |
+
}
|
568 |
+
if ( true === $response ) {
|
569 |
+
$this->set_error( '' );
|
570 |
+
}
|
571 |
|
572 |
+
return;
|
573 |
}
|
574 |
|
575 |
/**
|
668 |
* @return bool|mixed Update api response.
|
669 |
*/
|
670 |
private function get_version_data() {
|
671 |
+
|
672 |
+
$response = wp_remote_get(
|
673 |
+
sprintf(
|
674 |
+
'%slicense/version/%s/%s/%s/%s',
|
675 |
+
Product::API_URL,
|
676 |
+
rawurlencode( $this->product->get_name() ),
|
677 |
+
( empty( $this->license_key ) ? 'free' : $this->license_key ),
|
678 |
+
$this->product->get_version(),
|
679 |
+
rawurlencode( home_url() )
|
680 |
+
),
|
|
|
681 |
array(
|
682 |
'timeout' => 15,
|
683 |
'sslverify' => false,
|
690 |
if ( ! is_object( $update_data ) ) {
|
691 |
return false;
|
692 |
}
|
693 |
+
if ( isset( $update_data->slug ) ) {
|
694 |
+
$update_data->slug = $this->product->get_slug();
|
695 |
+
}
|
696 |
+
if ( isset( $update_data->icons ) ) {
|
697 |
+
$update_data->icons = (array) $update_data->icons;
|
698 |
+
}
|
699 |
+
if ( isset( $update_data->banners ) ) {
|
700 |
+
$update_data->banners = (array) $update_data->banners;
|
701 |
+
}
|
702 |
|
703 |
return $update_data;
|
704 |
}
|
763 |
* @return object $_data
|
764 |
*/
|
765 |
public function plugins_api_filter( $_data, $_action = '', $_args = null ) {
|
766 |
+
if ( ( 'plugin_information' !== $_action ) || ! isset( $_args->slug ) || ( $_args->slug !== $this->product->get_slug() ) ) {
|
767 |
return $_data;
|
768 |
}
|
769 |
$api_response = $this->api_request();
|
826 |
$this->register_license_hooks();
|
827 |
}
|
828 |
|
829 |
+
$namespace = apply_filters( 'themesle_sdk_namespace_' . md5( $product->get_basefile() ), false );
|
830 |
+
|
831 |
+
if ( false !== $namespace ) {
|
832 |
+
add_filter( 'themeisle_sdk_license_process_' . $namespace, [ $this, 'do_license_process' ], 10, 2 );
|
833 |
+
add_filter( 'product_' . $namespace . '_license_status', [ $this, 'get_license_status' ], PHP_INT_MAX );
|
834 |
+
add_filter( 'product_' . $namespace . '_license_key', [ $this->product, 'get_license' ] );
|
835 |
+
add_filter( 'product_' . $namespace . '_license_plan', [ $this, 'get_plan' ], PHP_INT_MAX );
|
836 |
+
if ( defined( 'WP_CLI' ) && WP_CLI ) {
|
837 |
+
\WP_CLI::add_command( $namespace . ' activate', [ $this, 'cli_activate' ] );
|
838 |
+
\WP_CLI::add_command( $namespace . ' deactivate', [ $this, 'cli_deactivate' ] );
|
839 |
+
\WP_CLI::add_command( $namespace . ' is-active', [ $this, 'cli_is_active' ] );
|
840 |
+
}
|
841 |
+
}
|
842 |
+
|
843 |
+
add_action( 'admin_head', [ $this, 'auto_activate' ] );
|
844 |
if ( $this->product->is_plugin() ) {
|
845 |
add_filter(
|
846 |
'pre_set_site_transient_update_plugins',
|
869 |
return $this;
|
870 |
}
|
871 |
|
872 |
+
/**
|
873 |
+
* Run license activation on plugin activate.
|
874 |
+
*/
|
875 |
+
public function auto_activate() {
|
876 |
+
if ( ! current_user_can( 'switch_themes' ) ) {
|
877 |
+
return;
|
878 |
+
}
|
879 |
+
$status = $this->get_license_status();
|
880 |
+
if ( 'not_active' !== $status ) {
|
881 |
+
return;
|
882 |
+
}
|
883 |
+
|
884 |
+
$license_file = dirname( $this->product->get_basefile() ) . '/license.json';
|
885 |
+
|
886 |
+
global $wp_filesystem;
|
887 |
+
if ( ! is_file( $license_file ) ) {
|
888 |
+
return;
|
889 |
+
}
|
890 |
+
|
891 |
+
require_once( ABSPATH . '/wp-admin/includes/file.php' );
|
892 |
+
\WP_Filesystem();
|
893 |
+
$content = json_decode( $wp_filesystem->get_contents( $license_file ) );
|
894 |
+
if ( ! is_object( $content ) ) {
|
895 |
+
return;
|
896 |
+
}
|
897 |
+
if ( ! isset( $content->key ) ) {
|
898 |
+
return;
|
899 |
+
}
|
900 |
+
$this->license_local = $content;
|
901 |
+
$lock_key = $this->product->get_key() . '_autoactivated';
|
902 |
+
|
903 |
+
if ( 'yes' === get_option( $lock_key, '' ) ) {
|
904 |
+
return;
|
905 |
+
}
|
906 |
+
$response = $this->do_license_process( $content->key, 'activate' );
|
907 |
+
|
908 |
+
update_option( $lock_key, 'yes' );
|
909 |
+
|
910 |
+
if ( apply_filters( $this->product->get_key() . '_hide_license_notices', false ) ) {
|
911 |
+
return;
|
912 |
+
}
|
913 |
+
|
914 |
+
if ( true === $response ) {
|
915 |
+
add_action( 'admin_notices', [ $this, 'autoactivate_notice' ] );
|
916 |
+
}
|
917 |
+
}
|
918 |
+
|
919 |
+
/**
|
920 |
+
* Show auto-activate notice.
|
921 |
+
*/
|
922 |
+
public function autoactivate_notice() {
|
923 |
+
?>
|
924 |
+
<div class="notice notice-success is-dismissible">
|
925 |
+
<p><?php echo sprintf( '<strong>%s</strong> has been successfully activated using <strong>%s</strong> license !', $this->product->get_name(), str_repeat( '*', 20 ) . substr( $this->license_local->key, - 10 ) ); ?></p>
|
926 |
+
</div>
|
927 |
+
<?php
|
928 |
+
}
|
929 |
+
|
930 |
+
/**
|
931 |
+
* Activate product license on this site.
|
932 |
+
*
|
933 |
+
* ## OPTIONS
|
934 |
+
*
|
935 |
+
* @param array $args Command args.
|
936 |
+
*
|
937 |
+
* [<license-key>]
|
938 |
+
* : Product license key.
|
939 |
+
*/
|
940 |
+
public function cli_activate( $args ) {
|
941 |
+
$license_key = isset( $args[0] ) ? trim( $args[0] ) : '';
|
942 |
+
$response = $this->do_license_process( $license_key, 'activate' );
|
943 |
+
if ( true !== $response ) {
|
944 |
+
\WP_CLI::error( $response->get_error_message() );
|
945 |
+
|
946 |
+
return;
|
947 |
+
}
|
948 |
+
|
949 |
+
\WP_CLI::success( 'Product successfully activated.' );
|
950 |
+
}
|
951 |
+
|
952 |
+
/**
|
953 |
+
* Deactivate product license on this site.
|
954 |
+
*
|
955 |
+
* @param array $args Command args.
|
956 |
+
*
|
957 |
+
* ## OPTIONS
|
958 |
+
*
|
959 |
+
* [<license-key>]
|
960 |
+
* : Product license key.
|
961 |
+
*/
|
962 |
+
public function cli_deactivate( $args ) {
|
963 |
+
$license_key = isset( $args[0] ) ? trim( $args[0] ) : '';
|
964 |
+
$response = $this->do_license_process( $license_key, 'deactivate' );
|
965 |
+
if ( true !== $response ) {
|
966 |
+
\WP_CLI::error( $response->get_error_message() );
|
967 |
+
|
968 |
+
return;
|
969 |
+
}
|
970 |
+
|
971 |
+
\WP_CLI::success( 'Product successfully deactivated.' );
|
972 |
+
}
|
973 |
+
|
974 |
+
/**
|
975 |
+
* Checks if product has license activated.
|
976 |
+
*
|
977 |
+
* @param array $args Command args.
|
978 |
+
*
|
979 |
+
* @subcommand is-active
|
980 |
+
*/
|
981 |
+
public function cli_is_active( $args ) {
|
982 |
+
|
983 |
+
$status = $this->get_license_status();
|
984 |
+
if ( 'valid' === $status ) {
|
985 |
+
\WP_CLI::halt( 0 );
|
986 |
+
|
987 |
+
return;
|
988 |
+
}
|
989 |
+
|
990 |
+
\WP_CLI::halt( 1 );
|
991 |
+
}
|
992 |
+
|
993 |
/**
|
994 |
* Register license fields for the products.
|
995 |
*/
|
996 |
public function register_license_hooks() {
|
997 |
add_action( 'admin_init', array( $this, 'register_settings' ) );
|
998 |
+
add_action( 'admin_init', array( $this, 'process_license' ) );
|
999 |
add_action( 'admin_init', array( $this, 'product_valid' ), 99999999 );
|
1000 |
add_action( 'admin_notices', array( $this, 'show_notice' ) );
|
1001 |
add_filter( $this->product->get_key() . '_license_status', array( $this, 'get_license_status' ) );
|
vendor/codeinwp/themeisle-sdk/src/Modules/Logger.php
CHANGED
@@ -27,7 +27,7 @@ class Logger extends Abstract_Module {
|
|
27 |
/**
|
28 |
* Endpoint where to collect logs.
|
29 |
*/
|
30 |
-
const TRACKING_ENDPOINT = '
|
31 |
|
32 |
|
33 |
/**
|
@@ -90,19 +90,22 @@ class Logger extends Abstract_Module {
|
|
90 |
* @return bool Is logger active?
|
91 |
*/
|
92 |
private function is_logger_active() {
|
93 |
-
|
94 |
-
return true;
|
95 |
-
}
|
96 |
-
$pro_slug = $this->product->get_pro_slug();
|
97 |
|
98 |
-
if ( !
|
99 |
-
$
|
100 |
-
|
101 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
102 |
}
|
103 |
}
|
104 |
|
105 |
-
return ( get_option( $this->product->get_key() . '_logger_flag',
|
106 |
}
|
107 |
|
108 |
/**
|
@@ -151,6 +154,7 @@ class Logger extends Abstract_Module {
|
|
151 |
$environment['theme'] = array();
|
152 |
$environment['theme']['name'] = $theme->get( 'Name' );
|
153 |
$environment['theme']['author'] = $theme->get( 'Author' );
|
|
|
154 |
$environment['plugins'] = get_option( 'active_plugins' );
|
155 |
global $wp_version;
|
156 |
wp_remote_post(
|
@@ -159,14 +163,12 @@ class Logger extends Abstract_Module {
|
|
159 |
'method' => 'POST',
|
160 |
'timeout' => 3,
|
161 |
'redirection' => 5,
|
162 |
-
'headers' => array(
|
163 |
-
'X-ThemeIsle-Event' => 'log_site',
|
164 |
-
),
|
165 |
'body' => array(
|
166 |
'site' => get_site_url(),
|
167 |
'slug' => $this->product->get_slug(),
|
168 |
'version' => $this->product->get_version(),
|
169 |
'wp_version' => $wp_version,
|
|
|
170 |
'data' => apply_filters( $this->product->get_key() . '_logger_data', array() ),
|
171 |
'environment' => $environment,
|
172 |
'license' => apply_filters( $this->product->get_key() . '_license_status', '' ),
|
27 |
/**
|
28 |
* Endpoint where to collect logs.
|
29 |
*/
|
30 |
+
const TRACKING_ENDPOINT = 'https://api.themeisle.com/tracking/log';
|
31 |
|
32 |
|
33 |
/**
|
90 |
* @return bool Is logger active?
|
91 |
*/
|
92 |
private function is_logger_active() {
|
93 |
+
$default = 'no';
|
|
|
|
|
|
|
94 |
|
95 |
+
if ( ! $this->product->is_wordpress_available() ) {
|
96 |
+
$default = 'yes';
|
97 |
+
} else {
|
98 |
+
$pro_slug = $this->product->get_pro_slug();
|
99 |
+
|
100 |
+
if ( ! empty( $pro_slug ) ) {
|
101 |
+
$all_products = Loader::get_products();
|
102 |
+
if ( isset( $all_products[ $pro_slug ] ) ) {
|
103 |
+
$default = 'yes';
|
104 |
+
}
|
105 |
}
|
106 |
}
|
107 |
|
108 |
+
return ( get_option( $this->product->get_key() . '_logger_flag', $default ) === 'yes' );
|
109 |
}
|
110 |
|
111 |
/**
|
154 |
$environment['theme'] = array();
|
155 |
$environment['theme']['name'] = $theme->get( 'Name' );
|
156 |
$environment['theme']['author'] = $theme->get( 'Author' );
|
157 |
+
$environment['theme']['parent'] = $theme->parent() !== false ? $theme->parent()->get( 'Name' ) : $theme->get( 'Name' );
|
158 |
$environment['plugins'] = get_option( 'active_plugins' );
|
159 |
global $wp_version;
|
160 |
wp_remote_post(
|
163 |
'method' => 'POST',
|
164 |
'timeout' => 3,
|
165 |
'redirection' => 5,
|
|
|
|
|
|
|
166 |
'body' => array(
|
167 |
'site' => get_site_url(),
|
168 |
'slug' => $this->product->get_slug(),
|
169 |
'version' => $this->product->get_version(),
|
170 |
'wp_version' => $wp_version,
|
171 |
+
'locale' => get_locale(),
|
172 |
'data' => apply_filters( $this->product->get_key() . '_logger_data', array() ),
|
173 |
'environment' => $environment,
|
174 |
'license' => apply_filters( $this->product->get_key() . '_license_status', '' ),
|
vendor/codeinwp/themeisle-sdk/src/Modules/Notification.php
CHANGED
@@ -226,7 +226,7 @@ class Notification extends Abstract_Module {
|
|
226 |
/**
|
227 |
* Get last notification details.
|
228 |
*
|
229 |
-
* @return
|
230 |
*/
|
231 |
private static function get_last_active_notification_timestamp() {
|
232 |
$notification = self::get_notifications_metadata();
|
@@ -374,6 +374,10 @@ class Notification extends Abstract_Module {
|
|
374 |
if ( empty( $id ) ) {
|
375 |
wp_send_json( [] );
|
376 |
}
|
|
|
|
|
|
|
|
|
377 |
self::set_last_active_notification_timestamp();
|
378 |
update_option( $id, $confirm );
|
379 |
do_action( $id . '_process_confirm', $confirm );
|
@@ -430,6 +434,9 @@ class Notification extends Abstract_Module {
|
|
430 |
* @return Notification Module instance.
|
431 |
*/
|
432 |
public function load( $product ) {
|
|
|
|
|
|
|
433 |
$this->product = $product;
|
434 |
|
435 |
$notifications = apply_filters( 'themeisle_sdk_registered_notifications', [] );
|
226 |
/**
|
227 |
* Get last notification details.
|
228 |
*
|
229 |
+
* @return int Last notification details.
|
230 |
*/
|
231 |
private static function get_last_active_notification_timestamp() {
|
232 |
$notification = self::get_notifications_metadata();
|
374 |
if ( empty( $id ) ) {
|
375 |
wp_send_json( [] );
|
376 |
}
|
377 |
+
$ids = wp_list_pluck( self::$notifications, 'id' );
|
378 |
+
if ( ! in_array( $id, $ids, true ) ) {
|
379 |
+
wp_send_json( [] );
|
380 |
+
}
|
381 |
self::set_last_active_notification_timestamp();
|
382 |
update_option( $id, $confirm );
|
383 |
do_action( $id . '_process_confirm', $confirm );
|
434 |
* @return Notification Module instance.
|
435 |
*/
|
436 |
public function load( $product ) {
|
437 |
+
if ( apply_filters( 'themeisle_sdk_hide_notifications', false ) ) {
|
438 |
+
return;
|
439 |
+
}
|
440 |
$this->product = $product;
|
441 |
|
442 |
$notifications = apply_filters( 'themeisle_sdk_registered_notifications', [] );
|
vendor/codeinwp/themeisle-sdk/src/Modules/Review.php
CHANGED
@@ -60,14 +60,14 @@ class Review extends Abstract_Module {
|
|
60 |
'Stefan',
|
61 |
'Uriahs',
|
62 |
'Madalin',
|
63 |
-
'
|
64 |
'Silviu',
|
65 |
'Andrei',
|
66 |
];
|
67 |
|
68 |
$link = 'https://wordpress.org/support/' . $this->product->get_type() . '/' . $this->product->get_slug() . '/reviews/#wporg-footer';
|
69 |
|
70 |
-
$message = apply_filters( $this->product->get_key() . '_feedback_review_message', '<p>Hey, it
|
71 |
|
72 |
$button_submit = apply_filters( $this->product->get_key() . '_feedback_review_button_do', 'Ok, I will gladly help.' );
|
73 |
$button_cancel = apply_filters( $this->product->get_key() . '_feedback_review_button_cancel', 'No, thanks.' );
|
60 |
'Stefan',
|
61 |
'Uriahs',
|
62 |
'Madalin',
|
63 |
+
'Cristi',
|
64 |
'Silviu',
|
65 |
'Andrei',
|
66 |
];
|
67 |
|
68 |
$link = 'https://wordpress.org/support/' . $this->product->get_type() . '/' . $this->product->get_slug() . '/reviews/#wporg-footer';
|
69 |
|
70 |
+
$message = apply_filters( $this->product->get_key() . '_feedback_review_message', '<p>Hey, it\'s great to see you have <b>{product}</b> active for a few days now. How is everything going? If you can spare a few moments to rate it on WordPress.org it would help us a lot (and boost my motivation). Cheers! <br/> <br/>~ {developer}, developer of {product}</p>' );
|
71 |
|
72 |
$button_submit = apply_filters( $this->product->get_key() . '_feedback_review_button_do', 'Ok, I will gladly help.' );
|
73 |
$button_cancel = apply_filters( $this->product->get_key() . '_feedback_review_button_cancel', 'No, thanks.' );
|
vendor/codeinwp/themeisle-sdk/src/Modules/Rollback.php
CHANGED
@@ -167,7 +167,7 @@ class Rollback extends Abstract_Module {
|
|
167 |
return '';
|
168 |
}
|
169 |
|
170 |
-
return sprintf( '%s
|
171 |
}
|
172 |
|
173 |
/**
|
167 |
return '';
|
168 |
}
|
169 |
|
170 |
+
return sprintf( '%slicense/versions/%s/%s/%s/%s', Product::API_URL, rawurlencode( $this->product->get_name() ), $license, urlencode( get_site_url() ), $this->product->get_version() );
|
171 |
}
|
172 |
|
173 |
/**
|
vendor/codeinwp/themeisle-sdk/src/Modules/Translate.php
CHANGED
@@ -295,7 +295,7 @@ class Translate extends Abstract_Module {
|
|
295 |
),
|
296 |
'gn' => array(
|
297 |
'slug' => 'gn',
|
298 |
-
'name' => '
|
299 |
),
|
300 |
'gsw' => array(
|
301 |
'slug' => 'gsw',
|
@@ -471,7 +471,7 @@ class Translate extends Abstract_Module {
|
|
471 |
),
|
472 |
'nb_NO' => array(
|
473 |
'slug' => 'nb',
|
474 |
-
'name' => 'Norwegian (
|
475 |
),
|
476 |
'nl_NL' => array(
|
477 |
'slug' => 'nl',
|
295 |
),
|
296 |
'gn' => array(
|
297 |
'slug' => 'gn',
|
298 |
+
'name' => 'Guarani',
|
299 |
),
|
300 |
'gsw' => array(
|
301 |
'slug' => 'gsw',
|
471 |
),
|
472 |
'nb_NO' => array(
|
473 |
'slug' => 'nb',
|
474 |
+
'name' => 'Norwegian (Bokmal)',
|
475 |
),
|
476 |
'nl_NL' => array(
|
477 |
'slug' => 'nl',
|
vendor/codeinwp/themeisle-sdk/src/Modules/Uninstall_feedback.php
CHANGED
@@ -40,7 +40,7 @@ class Uninstall_Feedback extends Abstract_Module {
|
|
40 |
*
|
41 |
* @var string Endpoint url.
|
42 |
*/
|
43 |
-
const FEEDBACK_ENDPOINT = '
|
44 |
|
45 |
/**
|
46 |
* Default options for plugins.
|
@@ -109,7 +109,7 @@ class Uninstall_Feedback extends Abstract_Module {
|
|
109 |
*
|
110 |
* @var string $heading_plugin The heading of the modal
|
111 |
*/
|
112 |
-
private $heading_plugin = 'What
|
113 |
/**
|
114 |
* Default heading for theme.
|
115 |
*
|
@@ -698,6 +698,7 @@ class Uninstall_Feedback extends Abstract_Module {
|
|
698 |
'title' => 'Below is a detailed view of all data that ThemeIsle will receive if you fill in this survey. No domain name, email address or IP addresses are transmited after you submit the survey.',
|
699 |
'items' => [
|
700 |
sprintf( '%s %s version %s %s %s %s', '<strong>', ucwords( $this->product->get_type() ), '</strong>', '<code>', $this->product->get_version(), '</code>' ),
|
|
|
701 |
sprintf( '%s Uninstall reason %s %s Selected reason from the above survey %s ', '<strong>', '</strong>', '<i>', '</i>' ),
|
702 |
],
|
703 |
],
|
@@ -782,6 +783,7 @@ class Uninstall_Feedback extends Abstract_Module {
|
|
782 |
$version = $this->product->get_version();
|
783 |
$attributes['slug'] = $slug;
|
784 |
$attributes['version'] = $version;
|
|
|
785 |
|
786 |
$response = wp_remote_post(
|
787 |
self::FEEDBACK_ENDPOINT,
|
@@ -836,6 +838,11 @@ class Uninstall_Feedback extends Abstract_Module {
|
|
836 |
* @return Uninstall_Feedback Current module instance.
|
837 |
*/
|
838 |
public function load( $product ) {
|
|
|
|
|
|
|
|
|
|
|
839 |
$this->product = $product;
|
840 |
add_action( 'admin_head', array( $this, 'load_resources' ) );
|
841 |
add_action( 'wp_ajax_' . $this->product->get_key() . '_uninstall_feedback', array( $this, 'post_deactivate' ) );
|
40 |
*
|
41 |
* @var string Endpoint url.
|
42 |
*/
|
43 |
+
const FEEDBACK_ENDPOINT = 'https://api.themeisle.com/tracking/uninstall';
|
44 |
|
45 |
/**
|
46 |
* Default options for plugins.
|
109 |
*
|
110 |
* @var string $heading_plugin The heading of the modal
|
111 |
*/
|
112 |
+
private $heading_plugin = 'What\'s wrong?';
|
113 |
/**
|
114 |
* Default heading for theme.
|
115 |
*
|
698 |
'title' => 'Below is a detailed view of all data that ThemeIsle will receive if you fill in this survey. No domain name, email address or IP addresses are transmited after you submit the survey.',
|
699 |
'items' => [
|
700 |
sprintf( '%s %s version %s %s %s %s', '<strong>', ucwords( $this->product->get_type() ), '</strong>', '<code>', $this->product->get_version(), '</code>' ),
|
701 |
+
sprintf( '%sCurrent website:%s %s %s %s', '<strong>', '</strong>', '<code>', get_site_url(), '</code>' ),
|
702 |
sprintf( '%s Uninstall reason %s %s Selected reason from the above survey %s ', '<strong>', '</strong>', '<i>', '</i>' ),
|
703 |
],
|
704 |
],
|
783 |
$version = $this->product->get_version();
|
784 |
$attributes['slug'] = $slug;
|
785 |
$attributes['version'] = $version;
|
786 |
+
$attributes['url'] = get_site_url();
|
787 |
|
788 |
$response = wp_remote_post(
|
789 |
self::FEEDBACK_ENDPOINT,
|
838 |
* @return Uninstall_Feedback Current module instance.
|
839 |
*/
|
840 |
public function load( $product ) {
|
841 |
+
|
842 |
+
if ( apply_filters( $product->get_key() . '_hide_uninstall_feedback', false ) ) {
|
843 |
+
return;
|
844 |
+
}
|
845 |
+
|
846 |
$this->product = $product;
|
847 |
add_action( 'admin_head', array( $this, 'load_resources' ) );
|
848 |
add_action( 'wp_ajax_' . $this->product->get_key() . '_uninstall_feedback', array( $this, 'post_deactivate' ) );
|
vendor/codeinwp/themeisle-sdk/src/Product.php
CHANGED
@@ -106,7 +106,10 @@ class Product {
|
|
106 |
* @var string $version The product version.
|
107 |
*/
|
108 |
private $version;
|
109 |
-
|
|
|
|
|
|
|
110 |
/**
|
111 |
* ThemeIsle_SDK_Product constructor.
|
112 |
*
|
106 |
* @var string $version The product version.
|
107 |
*/
|
108 |
private $version;
|
109 |
+
/**
|
110 |
+
* Root api endpoint.
|
111 |
+
*/
|
112 |
+
const API_URL = 'https://api.themeisle.com/';
|
113 |
/**
|
114 |
* ThemeIsle_SDK_Product constructor.
|
115 |
*
|
vendor/composer/autoload_classmap.php
CHANGED
@@ -6,26 +6,6 @@ $vendorDir = dirname(dirname(__FILE__));
|
|
6 |
$baseDir = dirname($vendorDir);
|
7 |
|
8 |
return array(
|
9 |
-
'Google\\Auth\\ApplicationDefaultCredentials' => $vendorDir . '/google/auth/src/ApplicationDefaultCredentials.php',
|
10 |
-
'Google\\Auth\\CacheTrait' => $vendorDir . '/google/auth/src/CacheTrait.php',
|
11 |
-
'Google\\Auth\\CredentialsLoader' => $vendorDir . '/google/auth/src/CredentialsLoader.php',
|
12 |
-
'Google\\Auth\\Credentials\\AppIdentityCredentials' => $vendorDir . '/google/auth/src/Credentials/AppIdentityCredentials.php',
|
13 |
-
'Google\\Auth\\Credentials\\GCECredentials' => $vendorDir . '/google/auth/src/Credentials/GCECredentials.php',
|
14 |
-
'Google\\Auth\\Credentials\\IAMCredentials' => $vendorDir . '/google/auth/src/Credentials/IAMCredentials.php',
|
15 |
-
'Google\\Auth\\Credentials\\ServiceAccountCredentials' => $vendorDir . '/google/auth/src/Credentials/ServiceAccountCredentials.php',
|
16 |
-
'Google\\Auth\\Credentials\\ServiceAccountJwtAccessCredentials' => $vendorDir . '/google/auth/src/Credentials/ServiceAccountJwtAccessCredentials.php',
|
17 |
-
'Google\\Auth\\Credentials\\UserRefreshCredentials' => $vendorDir . '/google/auth/src/Credentials/UserRefreshCredentials.php',
|
18 |
-
'Google\\Auth\\FetchAuthTokenInterface' => $vendorDir . '/google/auth/src/FetchAuthTokenInterface.php',
|
19 |
-
'Google\\Auth\\HttpHandler\\Guzzle5HttpHandler' => $vendorDir . '/google/auth/src/HttpHandler/Guzzle5HttpHandler.php',
|
20 |
-
'Google\\Auth\\HttpHandler\\Guzzle6HttpHandler' => $vendorDir . '/google/auth/src/HttpHandler/Guzzle6HttpHandler.php',
|
21 |
-
'Google\\Auth\\HttpHandler\\HttpHandlerFactory' => $vendorDir . '/google/auth/src/HttpHandler/HttpHandlerFactory.php',
|
22 |
-
'Google\\Auth\\Middleware\\AuthTokenMiddleware' => $vendorDir . '/google/auth/src/Middleware/AuthTokenMiddleware.php',
|
23 |
-
'Google\\Auth\\Middleware\\ScopedAccessTokenMiddleware' => $vendorDir . '/google/auth/src/Middleware/ScopedAccessTokenMiddleware.php',
|
24 |
-
'Google\\Auth\\Middleware\\SimpleMiddleware' => $vendorDir . '/google/auth/src/Middleware/SimpleMiddleware.php',
|
25 |
-
'Google\\Auth\\OAuth2' => $vendorDir . '/google/auth/src/OAuth2.php',
|
26 |
-
'Google\\Auth\\Subscriber\\AuthTokenSubscriber' => $vendorDir . '/google/auth/src/Subscriber/AuthTokenSubscriber.php',
|
27 |
-
'Google\\Auth\\Subscriber\\ScopedAccessTokenSubscriber' => $vendorDir . '/google/auth/src/Subscriber/ScopedAccessTokenSubscriber.php',
|
28 |
-
'Google\\Auth\\Subscriber\\SimpleSubscriber' => $vendorDir . '/google/auth/src/Subscriber/SimpleSubscriber.php',
|
29 |
'Google_Service_Exception' => $vendorDir . '/google/apiclient/src/Google/Service/Exception.php',
|
30 |
'Google_Service_Resource' => $vendorDir . '/google/apiclient/src/Google/Service/Resource.php',
|
31 |
);
|
6 |
$baseDir = dirname($vendorDir);
|
7 |
|
8 |
return array(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
'Google_Service_Exception' => $vendorDir . '/google/apiclient/src/Google/Service/Exception.php',
|
10 |
'Google_Service_Resource' => $vendorDir . '/google/apiclient/src/Google/Service/Resource.php',
|
11 |
);
|
vendor/composer/autoload_files.php
CHANGED
@@ -8,9 +8,6 @@ $baseDir = dirname($vendorDir);
|
|
8 |
return array(
|
9 |
'7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
|
10 |
'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php',
|
11 |
-
'25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php',
|
12 |
-
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
|
13 |
-
'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php',
|
14 |
'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php',
|
15 |
'37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
|
16 |
'decc78cc4436b1292c6c0d151b19445c' => $vendorDir . '/phpseclib/phpseclib/phpseclib/bootstrap.php',
|
8 |
return array(
|
9 |
'7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
|
10 |
'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php',
|
|
|
|
|
|
|
11 |
'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php',
|
12 |
'37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
|
13 |
'decc78cc4436b1292c6c0d151b19445c' => $vendorDir . '/phpseclib/phpseclib/phpseclib/bootstrap.php',
|
vendor/composer/autoload_namespaces.php
CHANGED
@@ -6,5 +6,6 @@ $vendorDir = dirname(dirname(__FILE__));
|
|
6 |
$baseDir = dirname($vendorDir);
|
7 |
|
8 |
return array(
|
|
|
9 |
'Google_' => array($vendorDir . '/google/apiclient/src'),
|
10 |
);
|
6 |
$baseDir = dirname($vendorDir);
|
7 |
|
8 |
return array(
|
9 |
+
'Google_Service_' => array($vendorDir . '/google/apiclient-services/src'),
|
10 |
'Google_' => array($vendorDir . '/google/apiclient/src'),
|
11 |
);
|
vendor/composer/autoload_psr4.php
CHANGED
@@ -7,11 +7,9 @@ $baseDir = dirname($vendorDir);
|
|
7 |
|
8 |
return array(
|
9 |
'phpseclib\\' => array($vendorDir . '/phpseclib/phpseclib/phpseclib'),
|
10 |
-
'Symfony\\Polyfill\\Php72\\' => array($vendorDir . '/symfony/polyfill-php72'),
|
11 |
-
'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
|
12 |
-
'Symfony\\Polyfill\\Intl\\Idn\\' => array($vendorDir . '/symfony/polyfill-intl-idn'),
|
13 |
'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'),
|
14 |
'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'),
|
|
|
15 |
'Psr\\Cache\\' => array($vendorDir . '/psr/cache/src'),
|
16 |
'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'),
|
17 |
'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'),
|
7 |
|
8 |
return array(
|
9 |
'phpseclib\\' => array($vendorDir . '/phpseclib/phpseclib/phpseclib'),
|
|
|
|
|
|
|
10 |
'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'),
|
11 |
'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'),
|
12 |
+
'Psr\\Http\\Client\\' => array($vendorDir . '/psr/http-client/src'),
|
13 |
'Psr\\Cache\\' => array($vendorDir . '/psr/cache/src'),
|
14 |
'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'),
|
15 |
'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'),
|
vendor/composer/autoload_real.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
-
class
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit0f913ace44c05aa3e8fba184a66cc7b6
|
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
-
spl_autoload_register(array('
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
-
spl_autoload_unregister(array('
|
25 |
|
26 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
27 |
foreach ($map as $namespace => $path) {
|
@@ -42,14 +42,14 @@ class ComposerAutoloaderInit0f913ace44c05aa3e8fba184a66cc7b6
|
|
42 |
|
43 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
44 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
45 |
-
|
46 |
}
|
47 |
|
48 |
return $loader;
|
49 |
}
|
50 |
}
|
51 |
|
52 |
-
function
|
53 |
{
|
54 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
55 |
require $file;
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
+
class ComposerAutoloaderInit5addd03443a7d2d8e7222a53f7da14a1
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInit5addd03443a7d2d8e7222a53f7da14a1', 'loadClassLoader'), true, true);
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit5addd03443a7d2d8e7222a53f7da14a1', 'loadClassLoader'));
|
25 |
|
26 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
27 |
foreach ($map as $namespace => $path) {
|
42 |
|
43 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
44 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
45 |
+
composerRequire5addd03443a7d2d8e7222a53f7da14a1($fileIdentifier, $file);
|
46 |
}
|
47 |
|
48 |
return $loader;
|
49 |
}
|
50 |
}
|
51 |
|
52 |
+
function composerRequire5addd03443a7d2d8e7222a53f7da14a1($fileIdentifier, $file)
|
53 |
{
|
54 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
55 |
require $file;
|
vendor/composer/installed.json
CHANGED
@@ -57,17 +57,17 @@
|
|
57 |
},
|
58 |
{
|
59 |
"name": "codeinwp/themeisle-sdk",
|
60 |
-
"version": "3.
|
61 |
-
"version_normalized": "3.
|
62 |
"source": {
|
63 |
"type": "git",
|
64 |
"url": "https://github.com/Codeinwp/themeisle-sdk.git",
|
65 |
-
"reference": "
|
66 |
},
|
67 |
"dist": {
|
68 |
"type": "zip",
|
69 |
-
"url": "https://api.github.com/repos/Codeinwp/themeisle-sdk/zipball/
|
70 |
-
"reference": "
|
71 |
"shasum": ""
|
72 |
},
|
73 |
"require-dev": {
|
@@ -75,7 +75,7 @@
|
|
75 |
"squizlabs/php_codesniffer": "^3.1",
|
76 |
"wp-coding-standards/wpcs": "^1.0.0"
|
77 |
},
|
78 |
-
"time": "
|
79 |
"type": "library",
|
80 |
"installation-source": "dist",
|
81 |
"notification-url": "https://packagist.org/downloads/",
|
@@ -157,17 +157,17 @@
|
|
157 |
},
|
158 |
{
|
159 |
"name": "phpseclib/phpseclib",
|
160 |
-
"version": "2.0.
|
161 |
-
"version_normalized": "2.0.
|
162 |
"source": {
|
163 |
"type": "git",
|
164 |
"url": "https://github.com/phpseclib/phpseclib.git",
|
165 |
-
"reference": "
|
166 |
},
|
167 |
"dist": {
|
168 |
"type": "zip",
|
169 |
-
"url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/
|
170 |
-
"reference": "
|
171 |
"shasum": ""
|
172 |
},
|
173 |
"require": {
|
@@ -176,7 +176,6 @@
|
|
176 |
"require-dev": {
|
177 |
"phing/phing": "~2.7",
|
178 |
"phpunit/phpunit": "^4.8.35|^5.7|^6.0",
|
179 |
-
"sami/sami": "~2.0",
|
180 |
"squizlabs/php_codesniffer": "~2.0"
|
181 |
},
|
182 |
"suggest": {
|
@@ -185,7 +184,7 @@
|
|
185 |
"ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.",
|
186 |
"ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations."
|
187 |
},
|
188 |
-
"time": "2020-
|
189 |
"type": "library",
|
190 |
"installation-source": "dist",
|
191 |
"autoload": {
|
@@ -300,22 +299,22 @@
|
|
300 |
},
|
301 |
{
|
302 |
"name": "monolog/monolog",
|
303 |
-
"version": "1.
|
304 |
-
"version_normalized": "1.
|
305 |
"source": {
|
306 |
"type": "git",
|
307 |
"url": "https://github.com/Seldaek/monolog.git",
|
308 |
-
"reference": "
|
309 |
},
|
310 |
"dist": {
|
311 |
"type": "zip",
|
312 |
-
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/
|
313 |
-
"reference": "
|
314 |
"shasum": ""
|
315 |
},
|
316 |
"require": {
|
317 |
-
"php": ">=
|
318 |
-
"psr/log": "
|
319 |
},
|
320 |
"provide": {
|
321 |
"psr/log-implementation": "1.0.0"
|
@@ -323,34 +322,37 @@
|
|
323 |
"require-dev": {
|
324 |
"aws/aws-sdk-php": "^2.4.9 || ^3.0",
|
325 |
"doctrine/couchdb": "~1.0@dev",
|
326 |
-
"
|
327 |
-
"
|
328 |
"php-amqplib/php-amqplib": "~2.4",
|
329 |
"php-console/php-console": "^3.1.3",
|
330 |
-
"
|
331 |
-
"
|
|
|
|
|
|
|
332 |
"ruflin/elastica": ">=0.90 <3.0",
|
333 |
-
"sentry/sentry": "^0.13",
|
334 |
"swiftmailer/swiftmailer": "^5.3|^6.0"
|
335 |
},
|
336 |
"suggest": {
|
337 |
"aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
|
338 |
"doctrine/couchdb": "Allow sending log messages to a CouchDB server",
|
|
|
339 |
"ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
|
340 |
-
"ext-
|
|
|
341 |
"graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
|
342 |
-
"mongodb/mongodb": "Allow sending log messages to a MongoDB server via
|
343 |
"php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
|
344 |
"php-console/php-console": "Allow sending log messages to Google Chrome",
|
345 |
"rollbar/rollbar": "Allow sending log messages to Rollbar",
|
346 |
-
"ruflin/elastica": "Allow sending log messages to an Elastic Search server"
|
347 |
-
"sentry/sentry": "Allow sending log messages to a Sentry server"
|
348 |
},
|
349 |
-
"time": "
|
350 |
"type": "library",
|
351 |
"extra": {
|
352 |
"branch-alias": {
|
353 |
-
"dev-master": "2.
|
354 |
}
|
355 |
},
|
356 |
"installation-source": "dist",
|
@@ -546,102 +548,36 @@
|
|
546 |
]
|
547 |
},
|
548 |
{
|
549 |
-
"name": "
|
550 |
-
"version": "
|
551 |
-
"version_normalized": "1.
|
552 |
"source": {
|
553 |
"type": "git",
|
554 |
-
"url": "https://github.com/
|
555 |
-
"reference": "
|
556 |
},
|
557 |
"dist": {
|
558 |
"type": "zip",
|
559 |
-
"url": "https://api.github.com/repos/
|
560 |
-
"reference": "
|
561 |
"shasum": ""
|
562 |
},
|
563 |
"require": {
|
564 |
-
"php": "
|
|
|
565 |
},
|
566 |
-
"time": "2020-
|
567 |
"type": "library",
|
568 |
"extra": {
|
569 |
"branch-alias": {
|
570 |
-
"dev-master": "1.
|
571 |
}
|
572 |
},
|
573 |
"installation-source": "dist",
|
574 |
"autoload": {
|
575 |
"psr-4": {
|
576 |
-
"
|
577 |
-
},
|
578 |
-
"files": [
|
579 |
-
"bootstrap.php"
|
580 |
-
]
|
581 |
-
},
|
582 |
-
"notification-url": "https://packagist.org/downloads/",
|
583 |
-
"license": [
|
584 |
-
"MIT"
|
585 |
-
],
|
586 |
-
"authors": [
|
587 |
-
{
|
588 |
-
"name": "Nicolas Grekas",
|
589 |
-
"email": "p@tchwork.com"
|
590 |
-
},
|
591 |
-
{
|
592 |
-
"name": "Symfony Community",
|
593 |
-
"homepage": "https://symfony.com/contributors"
|
594 |
}
|
595 |
-
],
|
596 |
-
"description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
|
597 |
-
"homepage": "https://symfony.com",
|
598 |
-
"keywords": [
|
599 |
-
"compatibility",
|
600 |
-
"polyfill",
|
601 |
-
"portable",
|
602 |
-
"shim"
|
603 |
-
]
|
604 |
-
},
|
605 |
-
{
|
606 |
-
"name": "symfony/polyfill-mbstring",
|
607 |
-
"version": "v1.17.1",
|
608 |
-
"version_normalized": "1.17.1.0",
|
609 |
-
"source": {
|
610 |
-
"type": "git",
|
611 |
-
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
612 |
-
"reference": "7110338d81ce1cbc3e273136e4574663627037a7"
|
613 |
-
},
|
614 |
-
"dist": {
|
615 |
-
"type": "zip",
|
616 |
-
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7110338d81ce1cbc3e273136e4574663627037a7",
|
617 |
-
"reference": "7110338d81ce1cbc3e273136e4574663627037a7",
|
618 |
-
"shasum": ""
|
619 |
-
},
|
620 |
-
"require": {
|
621 |
-
"php": ">=5.3.3"
|
622 |
-
},
|
623 |
-
"suggest": {
|
624 |
-
"ext-mbstring": "For best performance"
|
625 |
-
},
|
626 |
-
"time": "2020-06-06 08:46:27",
|
627 |
-
"type": "library",
|
628 |
-
"extra": {
|
629 |
-
"branch-alias": {
|
630 |
-
"dev-master": "1.17-dev"
|
631 |
-
},
|
632 |
-
"thanks": {
|
633 |
-
"name": "symfony/polyfill",
|
634 |
-
"url": "https://github.com/symfony/polyfill"
|
635 |
-
}
|
636 |
-
},
|
637 |
-
"installation-source": "dist",
|
638 |
-
"autoload": {
|
639 |
-
"psr-4": {
|
640 |
-
"Symfony\\Polyfill\\Mbstring\\": ""
|
641 |
-
},
|
642 |
-
"files": [
|
643 |
-
"bootstrap.php"
|
644 |
-
]
|
645 |
},
|
646 |
"notification-url": "https://packagist.org/downloads/",
|
647 |
"license": [
|
@@ -649,90 +585,17 @@
|
|
649 |
],
|
650 |
"authors": [
|
651 |
{
|
652 |
-
"name": "
|
653 |
-
"
|
654 |
-
},
|
655 |
-
{
|
656 |
-
"name": "Symfony Community",
|
657 |
-
"homepage": "https://symfony.com/contributors"
|
658 |
-
}
|
659 |
-
],
|
660 |
-
"description": "Symfony polyfill for the Mbstring extension",
|
661 |
-
"homepage": "https://symfony.com",
|
662 |
-
"keywords": [
|
663 |
-
"compatibility",
|
664 |
-
"mbstring",
|
665 |
-
"polyfill",
|
666 |
-
"portable",
|
667 |
-
"shim"
|
668 |
-
]
|
669 |
-
},
|
670 |
-
{
|
671 |
-
"name": "symfony/polyfill-intl-idn",
|
672 |
-
"version": "v1.17.1",
|
673 |
-
"version_normalized": "1.17.1.0",
|
674 |
-
"source": {
|
675 |
-
"type": "git",
|
676 |
-
"url": "https://github.com/symfony/polyfill-intl-idn.git",
|
677 |
-
"reference": "a57f8161502549a742a63c09f0a604997bf47027"
|
678 |
-
},
|
679 |
-
"dist": {
|
680 |
-
"type": "zip",
|
681 |
-
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a57f8161502549a742a63c09f0a604997bf47027",
|
682 |
-
"reference": "a57f8161502549a742a63c09f0a604997bf47027",
|
683 |
-
"shasum": ""
|
684 |
-
},
|
685 |
-
"require": {
|
686 |
-
"php": ">=5.3.3",
|
687 |
-
"symfony/polyfill-mbstring": "^1.3",
|
688 |
-
"symfony/polyfill-php72": "^1.10"
|
689 |
-
},
|
690 |
-
"suggest": {
|
691 |
-
"ext-intl": "For best performance"
|
692 |
-
},
|
693 |
-
"time": "2020-06-06 08:46:27",
|
694 |
-
"type": "library",
|
695 |
-
"extra": {
|
696 |
-
"branch-alias": {
|
697 |
-
"dev-master": "1.17-dev"
|
698 |
-
},
|
699 |
-
"thanks": {
|
700 |
-
"name": "symfony/polyfill",
|
701 |
-
"url": "https://github.com/symfony/polyfill"
|
702 |
-
}
|
703 |
-
},
|
704 |
-
"installation-source": "dist",
|
705 |
-
"autoload": {
|
706 |
-
"psr-4": {
|
707 |
-
"Symfony\\Polyfill\\Intl\\Idn\\": ""
|
708 |
-
},
|
709 |
-
"files": [
|
710 |
-
"bootstrap.php"
|
711 |
-
]
|
712 |
-
},
|
713 |
-
"notification-url": "https://packagist.org/downloads/",
|
714 |
-
"license": [
|
715 |
-
"MIT"
|
716 |
-
],
|
717 |
-
"authors": [
|
718 |
-
{
|
719 |
-
"name": "Laurent Bassin",
|
720 |
-
"email": "laurent@bassin.info"
|
721 |
-
},
|
722 |
-
{
|
723 |
-
"name": "Symfony Community",
|
724 |
-
"homepage": "https://symfony.com/contributors"
|
725 |
}
|
726 |
],
|
727 |
-
"description": "
|
728 |
-
"homepage": "https://
|
729 |
"keywords": [
|
730 |
-
"
|
731 |
-
"
|
732 |
-
"
|
733 |
-
"
|
734 |
-
"portable",
|
735 |
-
"shim"
|
736 |
]
|
737 |
},
|
738 |
{
|
@@ -790,39 +653,45 @@
|
|
790 |
},
|
791 |
{
|
792 |
"name": "guzzlehttp/guzzle",
|
793 |
-
"version": "
|
794 |
-
"version_normalized": "
|
795 |
"source": {
|
796 |
"type": "git",
|
797 |
"url": "https://github.com/guzzle/guzzle.git",
|
798 |
-
"reference": "
|
799 |
},
|
800 |
"dist": {
|
801 |
"type": "zip",
|
802 |
-
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/
|
803 |
-
"reference": "
|
804 |
"shasum": ""
|
805 |
},
|
806 |
"require": {
|
807 |
"ext-json": "*",
|
808 |
"guzzlehttp/promises": "^1.0",
|
809 |
"guzzlehttp/psr7": "^1.6.1",
|
810 |
-
"php": "
|
811 |
-
"
|
|
|
|
|
|
|
812 |
},
|
813 |
"require-dev": {
|
814 |
"ext-curl": "*",
|
815 |
-
"
|
|
|
816 |
"psr/log": "^1.1"
|
817 |
},
|
818 |
"suggest": {
|
|
|
|
|
819 |
"psr/log": "Required for using the Log middleware"
|
820 |
},
|
821 |
-
"time": "2020-
|
822 |
"type": "library",
|
823 |
"extra": {
|
824 |
"branch-alias": {
|
825 |
-
"dev-master": "
|
826 |
}
|
827 |
},
|
828 |
"installation-source": "dist",
|
@@ -843,6 +712,11 @@
|
|
843 |
"name": "Michael Dowling",
|
844 |
"email": "mtdowling@gmail.com",
|
845 |
"homepage": "https://github.com/mtdowling"
|
|
|
|
|
|
|
|
|
|
|
846 |
}
|
847 |
],
|
848 |
"description": "Guzzle is a PHP HTTP client library",
|
@@ -853,6 +727,8 @@
|
|
853 |
"framework",
|
854 |
"http",
|
855 |
"http client",
|
|
|
|
|
856 |
"rest",
|
857 |
"web service"
|
858 |
]
|
@@ -907,23 +783,26 @@
|
|
907 |
},
|
908 |
{
|
909 |
"name": "firebase/php-jwt",
|
910 |
-
"version": "
|
911 |
-
"version_normalized": "
|
912 |
"source": {
|
913 |
"type": "git",
|
914 |
"url": "https://github.com/firebase/php-jwt.git",
|
915 |
-
"reference": "
|
916 |
},
|
917 |
"dist": {
|
918 |
"type": "zip",
|
919 |
-
"url": "https://api.github.com/repos/firebase/php-jwt/zipball/
|
920 |
-
"reference": "
|
921 |
"shasum": ""
|
922 |
},
|
923 |
"require": {
|
924 |
"php": ">=5.3.0"
|
925 |
},
|
926 |
-
"
|
|
|
|
|
|
|
927 |
"type": "library",
|
928 |
"installation-source": "dist",
|
929 |
"autoload": {
|
@@ -948,42 +827,50 @@
|
|
948 |
}
|
949 |
],
|
950 |
"description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.",
|
951 |
-
"homepage": "https://github.com/firebase/php-jwt"
|
|
|
|
|
|
|
|
|
952 |
},
|
953 |
{
|
954 |
"name": "google/auth",
|
955 |
-
"version": "
|
956 |
-
"version_normalized": "
|
957 |
"source": {
|
958 |
"type": "git",
|
959 |
"url": "https://github.com/googleapis/google-auth-library-php.git",
|
960 |
-
"reference": "
|
961 |
},
|
962 |
"dist": {
|
963 |
"type": "zip",
|
964 |
-
"url": "https://api.github.com/repos/googleapis/google-auth-library-php/zipball/
|
965 |
-
"reference": "
|
966 |
"shasum": ""
|
967 |
},
|
968 |
"require": {
|
969 |
-
"firebase/php-jwt": "~2.0|~3.0",
|
970 |
-
"guzzlehttp/guzzle": "
|
971 |
-
"guzzlehttp/psr7": "
|
972 |
"php": ">=5.4",
|
973 |
"psr/cache": "^1.0",
|
974 |
"psr/http-message": "^1.0"
|
975 |
},
|
976 |
"require-dev": {
|
977 |
-
"
|
978 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
979 |
},
|
980 |
-
"time": "
|
981 |
"type": "library",
|
982 |
"installation-source": "dist",
|
983 |
"autoload": {
|
984 |
-
"classmap": [
|
985 |
-
"src/"
|
986 |
-
],
|
987 |
"psr-4": {
|
988 |
"Google\\Auth\\": "src"
|
989 |
}
|
@@ -1000,42 +887,84 @@
|
|
1000 |
"oauth2"
|
1001 |
]
|
1002 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1003 |
{
|
1004 |
"name": "google/apiclient",
|
1005 |
-
"version": "v2.
|
1006 |
-
"version_normalized": "2.
|
1007 |
"source": {
|
1008 |
"type": "git",
|
1009 |
"url": "https://github.com/googleapis/google-api-php-client.git",
|
1010 |
-
"reference": "
|
1011 |
},
|
1012 |
"dist": {
|
1013 |
"type": "zip",
|
1014 |
-
"url": "https://api.github.com/repos/googleapis/google-api-php-client/zipball/
|
1015 |
-
"reference": "
|
1016 |
"shasum": ""
|
1017 |
},
|
1018 |
"require": {
|
1019 |
-
"firebase/php-jwt": "~2.0
|
1020 |
-
"google/apiclient-services": "
|
1021 |
-
"google/auth": "
|
1022 |
-
"guzzlehttp/guzzle": "~5.
|
1023 |
"guzzlehttp/psr7": "^1.2",
|
1024 |
-
"monolog/monolog": "^1.17",
|
1025 |
"php": ">=5.4",
|
1026 |
-
"phpseclib/phpseclib": "~2.0"
|
1027 |
},
|
1028 |
"require-dev": {
|
1029 |
-
"
|
|
|
|
|
|
|
|
|
1030 |
"squizlabs/php_codesniffer": "~2.3",
|
1031 |
"symfony/css-selector": "~2.1",
|
1032 |
-
"symfony/dom-crawler": "~2.1"
|
1033 |
-
"tedivm/stash": "^0.14.1"
|
1034 |
},
|
1035 |
"suggest": {
|
1036 |
-
"
|
1037 |
},
|
1038 |
-
"time": "
|
1039 |
"type": "library",
|
1040 |
"extra": {
|
1041 |
"branch-alias": {
|
57 |
},
|
58 |
{
|
59 |
"name": "codeinwp/themeisle-sdk",
|
60 |
+
"version": "3.2.15",
|
61 |
+
"version_normalized": "3.2.15.0",
|
62 |
"source": {
|
63 |
"type": "git",
|
64 |
"url": "https://github.com/Codeinwp/themeisle-sdk.git",
|
65 |
+
"reference": "95b7447a5f4faba410c281c4bf278fbd740fed71"
|
66 |
},
|
67 |
"dist": {
|
68 |
"type": "zip",
|
69 |
+
"url": "https://api.github.com/repos/Codeinwp/themeisle-sdk/zipball/95b7447a5f4faba410c281c4bf278fbd740fed71",
|
70 |
+
"reference": "95b7447a5f4faba410c281c4bf278fbd740fed71",
|
71 |
"shasum": ""
|
72 |
},
|
73 |
"require-dev": {
|
75 |
"squizlabs/php_codesniffer": "^3.1",
|
76 |
"wp-coding-standards/wpcs": "^1.0.0"
|
77 |
},
|
78 |
+
"time": "2020-07-23 15:02:10",
|
79 |
"type": "library",
|
80 |
"installation-source": "dist",
|
81 |
"notification-url": "https://packagist.org/downloads/",
|
157 |
},
|
158 |
{
|
159 |
"name": "phpseclib/phpseclib",
|
160 |
+
"version": "2.0.29",
|
161 |
+
"version_normalized": "2.0.29.0",
|
162 |
"source": {
|
163 |
"type": "git",
|
164 |
"url": "https://github.com/phpseclib/phpseclib.git",
|
165 |
+
"reference": "497856a8d997f640b4a516062f84228a772a48a8"
|
166 |
},
|
167 |
"dist": {
|
168 |
"type": "zip",
|
169 |
+
"url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/497856a8d997f640b4a516062f84228a772a48a8",
|
170 |
+
"reference": "497856a8d997f640b4a516062f84228a772a48a8",
|
171 |
"shasum": ""
|
172 |
},
|
173 |
"require": {
|
176 |
"require-dev": {
|
177 |
"phing/phing": "~2.7",
|
178 |
"phpunit/phpunit": "^4.8.35|^5.7|^6.0",
|
|
|
179 |
"squizlabs/php_codesniffer": "~2.0"
|
180 |
},
|
181 |
"suggest": {
|
184 |
"ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.",
|
185 |
"ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations."
|
186 |
},
|
187 |
+
"time": "2020-09-08 04:24:43",
|
188 |
"type": "library",
|
189 |
"installation-source": "dist",
|
190 |
"autoload": {
|
299 |
},
|
300 |
{
|
301 |
"name": "monolog/monolog",
|
302 |
+
"version": "2.1.1",
|
303 |
+
"version_normalized": "2.1.1.0",
|
304 |
"source": {
|
305 |
"type": "git",
|
306 |
"url": "https://github.com/Seldaek/monolog.git",
|
307 |
+
"reference": "f9eee5cec93dfb313a38b6b288741e84e53f02d5"
|
308 |
},
|
309 |
"dist": {
|
310 |
"type": "zip",
|
311 |
+
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/f9eee5cec93dfb313a38b6b288741e84e53f02d5",
|
312 |
+
"reference": "f9eee5cec93dfb313a38b6b288741e84e53f02d5",
|
313 |
"shasum": ""
|
314 |
},
|
315 |
"require": {
|
316 |
+
"php": ">=7.2",
|
317 |
+
"psr/log": "^1.0.1"
|
318 |
},
|
319 |
"provide": {
|
320 |
"psr/log-implementation": "1.0.0"
|
322 |
"require-dev": {
|
323 |
"aws/aws-sdk-php": "^2.4.9 || ^3.0",
|
324 |
"doctrine/couchdb": "~1.0@dev",
|
325 |
+
"elasticsearch/elasticsearch": "^6.0",
|
326 |
+
"graylog2/gelf-php": "^1.4.2",
|
327 |
"php-amqplib/php-amqplib": "~2.4",
|
328 |
"php-console/php-console": "^3.1.3",
|
329 |
+
"php-parallel-lint/php-parallel-lint": "^1.0",
|
330 |
+
"phpspec/prophecy": "^1.6.1",
|
331 |
+
"phpunit/phpunit": "^8.5",
|
332 |
+
"predis/predis": "^1.1",
|
333 |
+
"rollbar/rollbar": "^1.3",
|
334 |
"ruflin/elastica": ">=0.90 <3.0",
|
|
|
335 |
"swiftmailer/swiftmailer": "^5.3|^6.0"
|
336 |
},
|
337 |
"suggest": {
|
338 |
"aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
|
339 |
"doctrine/couchdb": "Allow sending log messages to a CouchDB server",
|
340 |
+
"elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client",
|
341 |
"ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
|
342 |
+
"ext-mbstring": "Allow to work properly with unicode symbols",
|
343 |
+
"ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)",
|
344 |
"graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
|
345 |
+
"mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)",
|
346 |
"php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
|
347 |
"php-console/php-console": "Allow sending log messages to Google Chrome",
|
348 |
"rollbar/rollbar": "Allow sending log messages to Rollbar",
|
349 |
+
"ruflin/elastica": "Allow sending log messages to an Elastic Search server"
|
|
|
350 |
},
|
351 |
+
"time": "2020-07-23 08:41:23",
|
352 |
"type": "library",
|
353 |
"extra": {
|
354 |
"branch-alias": {
|
355 |
+
"dev-master": "2.x-dev"
|
356 |
}
|
357 |
},
|
358 |
"installation-source": "dist",
|
548 |
]
|
549 |
},
|
550 |
{
|
551 |
+
"name": "psr/http-client",
|
552 |
+
"version": "1.0.1",
|
553 |
+
"version_normalized": "1.0.1.0",
|
554 |
"source": {
|
555 |
"type": "git",
|
556 |
+
"url": "https://github.com/php-fig/http-client.git",
|
557 |
+
"reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621"
|
558 |
},
|
559 |
"dist": {
|
560 |
"type": "zip",
|
561 |
+
"url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
|
562 |
+
"reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
|
563 |
"shasum": ""
|
564 |
},
|
565 |
"require": {
|
566 |
+
"php": "^7.0 || ^8.0",
|
567 |
+
"psr/http-message": "^1.0"
|
568 |
},
|
569 |
+
"time": "2020-06-29 06:28:15",
|
570 |
"type": "library",
|
571 |
"extra": {
|
572 |
"branch-alias": {
|
573 |
+
"dev-master": "1.0.x-dev"
|
574 |
}
|
575 |
},
|
576 |
"installation-source": "dist",
|
577 |
"autoload": {
|
578 |
"psr-4": {
|
579 |
+
"Psr\\Http\\Client\\": "src/"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
580 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
581 |
},
|
582 |
"notification-url": "https://packagist.org/downloads/",
|
583 |
"license": [
|
585 |
],
|
586 |
"authors": [
|
587 |
{
|
588 |
+
"name": "PHP-FIG",
|
589 |
+
"homepage": "http://www.php-fig.org/"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
590 |
}
|
591 |
],
|
592 |
+
"description": "Common interface for HTTP clients",
|
593 |
+
"homepage": "https://github.com/php-fig/http-client",
|
594 |
"keywords": [
|
595 |
+
"http",
|
596 |
+
"http-client",
|
597 |
+
"psr",
|
598 |
+
"psr-18"
|
|
|
|
|
599 |
]
|
600 |
},
|
601 |
{
|
653 |
},
|
654 |
{
|
655 |
"name": "guzzlehttp/guzzle",
|
656 |
+
"version": "7.1.0",
|
657 |
+
"version_normalized": "7.1.0.0",
|
658 |
"source": {
|
659 |
"type": "git",
|
660 |
"url": "https://github.com/guzzle/guzzle.git",
|
661 |
+
"reference": "7edeaa528fbb57123028bd5a76b9ce9540194e26"
|
662 |
},
|
663 |
"dist": {
|
664 |
"type": "zip",
|
665 |
+
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/7edeaa528fbb57123028bd5a76b9ce9540194e26",
|
666 |
+
"reference": "7edeaa528fbb57123028bd5a76b9ce9540194e26",
|
667 |
"shasum": ""
|
668 |
},
|
669 |
"require": {
|
670 |
"ext-json": "*",
|
671 |
"guzzlehttp/promises": "^1.0",
|
672 |
"guzzlehttp/psr7": "^1.6.1",
|
673 |
+
"php": "^7.2.5",
|
674 |
+
"psr/http-client": "^1.0"
|
675 |
+
},
|
676 |
+
"provide": {
|
677 |
+
"psr/http-client-implementation": "1.0"
|
678 |
},
|
679 |
"require-dev": {
|
680 |
"ext-curl": "*",
|
681 |
+
"php-http/client-integration-tests": "dev-phpunit8",
|
682 |
+
"phpunit/phpunit": "^8.5.5",
|
683 |
"psr/log": "^1.1"
|
684 |
},
|
685 |
"suggest": {
|
686 |
+
"ext-curl": "Required for CURL handler support",
|
687 |
+
"ext-intl": "Required for Internationalized Domain Name (IDN) support",
|
688 |
"psr/log": "Required for using the Log middleware"
|
689 |
},
|
690 |
+
"time": "2020-09-22 09:10:04",
|
691 |
"type": "library",
|
692 |
"extra": {
|
693 |
"branch-alias": {
|
694 |
+
"dev-master": "7.1-dev"
|
695 |
}
|
696 |
},
|
697 |
"installation-source": "dist",
|
712 |
"name": "Michael Dowling",
|
713 |
"email": "mtdowling@gmail.com",
|
714 |
"homepage": "https://github.com/mtdowling"
|
715 |
+
},
|
716 |
+
{
|
717 |
+
"name": "Márk Sági-Kazár",
|
718 |
+
"email": "mark.sagikazar@gmail.com",
|
719 |
+
"homepage": "https://sagikazarmark.hu"
|
720 |
}
|
721 |
],
|
722 |
"description": "Guzzle is a PHP HTTP client library",
|
727 |
"framework",
|
728 |
"http",
|
729 |
"http client",
|
730 |
+
"psr-18",
|
731 |
+
"psr-7",
|
732 |
"rest",
|
733 |
"web service"
|
734 |
]
|
783 |
},
|
784 |
{
|
785 |
"name": "firebase/php-jwt",
|
786 |
+
"version": "v5.2.0",
|
787 |
+
"version_normalized": "5.2.0.0",
|
788 |
"source": {
|
789 |
"type": "git",
|
790 |
"url": "https://github.com/firebase/php-jwt.git",
|
791 |
+
"reference": "feb0e820b8436873675fd3aca04f3728eb2185cb"
|
792 |
},
|
793 |
"dist": {
|
794 |
"type": "zip",
|
795 |
+
"url": "https://api.github.com/repos/firebase/php-jwt/zipball/feb0e820b8436873675fd3aca04f3728eb2185cb",
|
796 |
+
"reference": "feb0e820b8436873675fd3aca04f3728eb2185cb",
|
797 |
"shasum": ""
|
798 |
},
|
799 |
"require": {
|
800 |
"php": ">=5.3.0"
|
801 |
},
|
802 |
+
"require-dev": {
|
803 |
+
"phpunit/phpunit": ">=4.8 <=9"
|
804 |
+
},
|
805 |
+
"time": "2020-03-25 18:49:23",
|
806 |
"type": "library",
|
807 |
"installation-source": "dist",
|
808 |
"autoload": {
|
827 |
}
|
828 |
],
|
829 |
"description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.",
|
830 |
+
"homepage": "https://github.com/firebase/php-jwt",
|
831 |
+
"keywords": [
|
832 |
+
"jwt",
|
833 |
+
"php"
|
834 |
+
]
|
835 |
},
|
836 |
{
|
837 |
"name": "google/auth",
|
838 |
+
"version": "v1.13.0",
|
839 |
+
"version_normalized": "1.13.0.0",
|
840 |
"source": {
|
841 |
"type": "git",
|
842 |
"url": "https://github.com/googleapis/google-auth-library-php.git",
|
843 |
+
"reference": "173191f5defd1d9ae8bdfc28da31b63eb73dd34e"
|
844 |
},
|
845 |
"dist": {
|
846 |
"type": "zip",
|
847 |
+
"url": "https://api.github.com/repos/googleapis/google-auth-library-php/zipball/173191f5defd1d9ae8bdfc28da31b63eb73dd34e",
|
848 |
+
"reference": "173191f5defd1d9ae8bdfc28da31b63eb73dd34e",
|
849 |
"shasum": ""
|
850 |
},
|
851 |
"require": {
|
852 |
+
"firebase/php-jwt": "~2.0|~3.0|~4.0|~5.0",
|
853 |
+
"guzzlehttp/guzzle": "^5.3.1|^6.2.1|^7.0",
|
854 |
+
"guzzlehttp/psr7": "^1.2",
|
855 |
"php": ">=5.4",
|
856 |
"psr/cache": "^1.0",
|
857 |
"psr/http-message": "^1.0"
|
858 |
},
|
859 |
"require-dev": {
|
860 |
+
"guzzlehttp/promises": "0.1.1|^1.3",
|
861 |
+
"kelvinmo/simplejwt": "^0.2.5",
|
862 |
+
"phpseclib/phpseclib": "^2",
|
863 |
+
"phpunit/phpunit": "^4.8.36|^5.7",
|
864 |
+
"sebastian/comparator": ">=1.2.3",
|
865 |
+
"squizlabs/php_codesniffer": "^3.5"
|
866 |
+
},
|
867 |
+
"suggest": {
|
868 |
+
"phpseclib/phpseclib": "May be used in place of OpenSSL for signing strings or for token management. Please require version ^2."
|
869 |
},
|
870 |
+
"time": "2020-09-18 20:03:05",
|
871 |
"type": "library",
|
872 |
"installation-source": "dist",
|
873 |
"autoload": {
|
|
|
|
|
|
|
874 |
"psr-4": {
|
875 |
"Google\\Auth\\": "src"
|
876 |
}
|
887 |
"oauth2"
|
888 |
]
|
889 |
},
|
890 |
+
{
|
891 |
+
"name": "google/apiclient-services",
|
892 |
+
"version": "v0.147",
|
893 |
+
"version_normalized": "0.147.0.0",
|
894 |
+
"source": {
|
895 |
+
"type": "git",
|
896 |
+
"url": "https://github.com/googleapis/google-api-php-client-services.git",
|
897 |
+
"reference": "8624bd004cfccb33b760ae7650d0b750168cd7f7"
|
898 |
+
},
|
899 |
+
"dist": {
|
900 |
+
"type": "zip",
|
901 |
+
"url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/8624bd004cfccb33b760ae7650d0b750168cd7f7",
|
902 |
+
"reference": "8624bd004cfccb33b760ae7650d0b750168cd7f7",
|
903 |
+
"shasum": ""
|
904 |
+
},
|
905 |
+
"require": {
|
906 |
+
"php": ">=5.4"
|
907 |
+
},
|
908 |
+
"require-dev": {
|
909 |
+
"phpunit/phpunit": "^4.8|^5"
|
910 |
+
},
|
911 |
+
"time": "2020-09-20 00:24:43",
|
912 |
+
"type": "library",
|
913 |
+
"installation-source": "dist",
|
914 |
+
"autoload": {
|
915 |
+
"psr-0": {
|
916 |
+
"Google_Service_": "src"
|
917 |
+
}
|
918 |
+
},
|
919 |
+
"notification-url": "https://packagist.org/downloads/",
|
920 |
+
"license": [
|
921 |
+
"Apache-2.0"
|
922 |
+
],
|
923 |
+
"description": "Client library for Google APIs",
|
924 |
+
"homepage": "http://developers.google.com/api-client-library/php",
|
925 |
+
"keywords": [
|
926 |
+
"google"
|
927 |
+
]
|
928 |
+
},
|
929 |
{
|
930 |
"name": "google/apiclient",
|
931 |
+
"version": "v2.7.1",
|
932 |
+
"version_normalized": "2.7.1.0",
|
933 |
"source": {
|
934 |
"type": "git",
|
935 |
"url": "https://github.com/googleapis/google-api-php-client.git",
|
936 |
+
"reference": "e748d1d5a51166754f13809d35f1fa162cbec530"
|
937 |
},
|
938 |
"dist": {
|
939 |
"type": "zip",
|
940 |
+
"url": "https://api.github.com/repos/googleapis/google-api-php-client/zipball/e748d1d5a51166754f13809d35f1fa162cbec530",
|
941 |
+
"reference": "e748d1d5a51166754f13809d35f1fa162cbec530",
|
942 |
"shasum": ""
|
943 |
},
|
944 |
"require": {
|
945 |
+
"firebase/php-jwt": "~2.0||~3.0||~4.0||~5.0",
|
946 |
+
"google/apiclient-services": "~0.13",
|
947 |
+
"google/auth": "^1.10",
|
948 |
+
"guzzlehttp/guzzle": "~5.3.1||~6.0||~7.0",
|
949 |
"guzzlehttp/psr7": "^1.2",
|
950 |
+
"monolog/monolog": "^1.17|^2.0",
|
951 |
"php": ">=5.4",
|
952 |
+
"phpseclib/phpseclib": "~0.3.10||~2.0"
|
953 |
},
|
954 |
"require-dev": {
|
955 |
+
"cache/filesystem-adapter": "^0.3.2",
|
956 |
+
"composer/composer": "^1.10",
|
957 |
+
"dealerdirect/phpcodesniffer-composer-installer": "^0.5.0",
|
958 |
+
"phpcompatibility/php-compatibility": "^9.2",
|
959 |
+
"phpunit/phpunit": "^4.8.36|^5.0",
|
960 |
"squizlabs/php_codesniffer": "~2.3",
|
961 |
"symfony/css-selector": "~2.1",
|
962 |
+
"symfony/dom-crawler": "~2.1"
|
|
|
963 |
},
|
964 |
"suggest": {
|
965 |
+
"cache/filesystem-adapter": "For caching certs and tokens (using Google_Client::setCache)"
|
966 |
},
|
967 |
+
"time": "2020-09-08 16:38:08",
|
968 |
"type": "library",
|
969 |
"extra": {
|
970 |
"branch-alias": {
|
vendor/firebase/php-jwt/README.md
CHANGED
@@ -5,8 +5,7 @@
|
|
5 |
|
6 |
PHP-JWT
|
7 |
=======
|
8 |
-
A simple library to encode and decode JSON Web Tokens (JWT) in PHP.
|
9 |
-
conform to the [current spec](http://tools.ietf.org/html/draft-ietf-oauth-json-web-token-06)
|
10 |
|
11 |
Installation
|
12 |
------------
|
@@ -24,7 +23,7 @@ Example
|
|
24 |
use \Firebase\JWT\JWT;
|
25 |
|
26 |
$key = "example_key";
|
27 |
-
$
|
28 |
"iss" => "http://example.org",
|
29 |
"aud" => "http://example.com",
|
30 |
"iat" => 1356999524,
|
@@ -37,7 +36,7 @@ $token = array(
|
|
37 |
* https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40
|
38 |
* for a list of spec-compliant algorithms.
|
39 |
*/
|
40 |
-
$jwt = JWT::encode($
|
41 |
$decoded = JWT::decode($jwt, $key, array('HS256'));
|
42 |
|
43 |
print_r($decoded);
|
@@ -59,12 +58,93 @@ $decoded_array = (array) $decoded;
|
|
59 |
JWT::$leeway = 60; // $leeway in seconds
|
60 |
$decoded = JWT::decode($jwt, $key, array('HS256'));
|
61 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
62 |
?>
|
63 |
```
|
64 |
|
65 |
Changelog
|
66 |
---------
|
67 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
#### 3.0.0 / 2015-07-22
|
69 |
- Minimum PHP version updated from `5.2.0` to `5.3.0`.
|
70 |
- Add `\Firebase\JWT` namespace. See
|
@@ -109,6 +189,12 @@ Time: 0 seconds, Memory: 2.50Mb
|
|
109 |
OK (5 tests, 5 assertions)
|
110 |
```
|
111 |
|
|
|
|
|
|
|
|
|
|
|
|
|
112 |
License
|
113 |
-------
|
114 |
[3-Clause BSD](http://opensource.org/licenses/BSD-3-Clause).
|
5 |
|
6 |
PHP-JWT
|
7 |
=======
|
8 |
+
A simple library to encode and decode JSON Web Tokens (JWT) in PHP, conforming to [RFC 7519](https://tools.ietf.org/html/rfc7519).
|
|
|
9 |
|
10 |
Installation
|
11 |
------------
|
23 |
use \Firebase\JWT\JWT;
|
24 |
|
25 |
$key = "example_key";
|
26 |
+
$payload = array(
|
27 |
"iss" => "http://example.org",
|
28 |
"aud" => "http://example.com",
|
29 |
"iat" => 1356999524,
|
36 |
* https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40
|
37 |
* for a list of spec-compliant algorithms.
|
38 |
*/
|
39 |
+
$jwt = JWT::encode($payload, $key);
|
40 |
$decoded = JWT::decode($jwt, $key, array('HS256'));
|
41 |
|
42 |
print_r($decoded);
|
58 |
JWT::$leeway = 60; // $leeway in seconds
|
59 |
$decoded = JWT::decode($jwt, $key, array('HS256'));
|
60 |
|
61 |
+
?>
|
62 |
+
```
|
63 |
+
Example with RS256 (openssl)
|
64 |
+
----------------------------
|
65 |
+
```php
|
66 |
+
<?php
|
67 |
+
use \Firebase\JWT\JWT;
|
68 |
+
|
69 |
+
$privateKey = <<<EOD
|
70 |
+
-----BEGIN RSA PRIVATE KEY-----
|
71 |
+
MIICXAIBAAKBgQC8kGa1pSjbSYZVebtTRBLxBz5H4i2p/llLCrEeQhta5kaQu/Rn
|
72 |
+
vuER4W8oDH3+3iuIYW4VQAzyqFpwuzjkDI+17t5t0tyazyZ8JXw+KgXTxldMPEL9
|
73 |
+
5+qVhgXvwtihXC1c5oGbRlEDvDF6Sa53rcFVsYJ4ehde/zUxo6UvS7UrBQIDAQAB
|
74 |
+
AoGAb/MXV46XxCFRxNuB8LyAtmLDgi/xRnTAlMHjSACddwkyKem8//8eZtw9fzxz
|
75 |
+
bWZ/1/doQOuHBGYZU8aDzzj59FZ78dyzNFoF91hbvZKkg+6wGyd/LrGVEB+Xre0J
|
76 |
+
Nil0GReM2AHDNZUYRv+HYJPIOrB0CRczLQsgFJ8K6aAD6F0CQQDzbpjYdx10qgK1
|
77 |
+
cP59UHiHjPZYC0loEsk7s+hUmT3QHerAQJMZWC11Qrn2N+ybwwNblDKv+s5qgMQ5
|
78 |
+
5tNoQ9IfAkEAxkyffU6ythpg/H0Ixe1I2rd0GbF05biIzO/i77Det3n4YsJVlDck
|
79 |
+
ZkcvY3SK2iRIL4c9yY6hlIhs+K9wXTtGWwJBAO9Dskl48mO7woPR9uD22jDpNSwe
|
80 |
+
k90OMepTjzSvlhjbfuPN1IdhqvSJTDychRwn1kIJ7LQZgQ8fVz9OCFZ/6qMCQGOb
|
81 |
+
qaGwHmUK6xzpUbbacnYrIM6nLSkXgOAwv7XXCojvY614ILTK3iXiLBOxPu5Eu13k
|
82 |
+
eUz9sHyD6vkgZzjtxXECQAkp4Xerf5TGfQXGXhxIX52yH+N2LtujCdkQZjXAsGdm
|
83 |
+
B2zNzvrlgRmgBrklMTrMYgm1NPcW+bRLGcwgW2PTvNM=
|
84 |
+
-----END RSA PRIVATE KEY-----
|
85 |
+
EOD;
|
86 |
+
|
87 |
+
$publicKey = <<<EOD
|
88 |
+
-----BEGIN PUBLIC KEY-----
|
89 |
+
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC8kGa1pSjbSYZVebtTRBLxBz5H
|
90 |
+
4i2p/llLCrEeQhta5kaQu/RnvuER4W8oDH3+3iuIYW4VQAzyqFpwuzjkDI+17t5t
|
91 |
+
0tyazyZ8JXw+KgXTxldMPEL95+qVhgXvwtihXC1c5oGbRlEDvDF6Sa53rcFVsYJ4
|
92 |
+
ehde/zUxo6UvS7UrBQIDAQAB
|
93 |
+
-----END PUBLIC KEY-----
|
94 |
+
EOD;
|
95 |
+
|
96 |
+
$payload = array(
|
97 |
+
"iss" => "example.org",
|
98 |
+
"aud" => "example.com",
|
99 |
+
"iat" => 1356999524,
|
100 |
+
"nbf" => 1357000000
|
101 |
+
);
|
102 |
+
|
103 |
+
$jwt = JWT::encode($payload, $privateKey, 'RS256');
|
104 |
+
echo "Encode:\n" . print_r($jwt, true) . "\n";
|
105 |
+
|
106 |
+
$decoded = JWT::decode($jwt, $publicKey, array('RS256'));
|
107 |
+
|
108 |
+
/*
|
109 |
+
NOTE: This will now be an object instead of an associative array. To get
|
110 |
+
an associative array, you will need to cast it as such:
|
111 |
+
*/
|
112 |
+
|
113 |
+
$decoded_array = (array) $decoded;
|
114 |
+
echo "Decode:\n" . print_r($decoded_array, true) . "\n";
|
115 |
?>
|
116 |
```
|
117 |
|
118 |
Changelog
|
119 |
---------
|
120 |
|
121 |
+
#### 5.0.0 / 2017-06-26
|
122 |
+
- Support RS384 and RS512.
|
123 |
+
See [#117](https://github.com/firebase/php-jwt/pull/117). Thanks [@joostfaassen](https://github.com/joostfaassen)!
|
124 |
+
- Add an example for RS256 openssl.
|
125 |
+
See [#125](https://github.com/firebase/php-jwt/pull/125). Thanks [@akeeman](https://github.com/akeeman)!
|
126 |
+
- Detect invalid Base64 encoding in signature.
|
127 |
+
See [#162](https://github.com/firebase/php-jwt/pull/162). Thanks [@psignoret](https://github.com/psignoret)!
|
128 |
+
- Update `JWT::verify` to handle OpenSSL errors.
|
129 |
+
See [#159](https://github.com/firebase/php-jwt/pull/159). Thanks [@bshaffer](https://github.com/bshaffer)!
|
130 |
+
- Add `array` type hinting to `decode` method
|
131 |
+
See [#101](https://github.com/firebase/php-jwt/pull/101). Thanks [@hywak](https://github.com/hywak)!
|
132 |
+
- Add all JSON error types.
|
133 |
+
See [#110](https://github.com/firebase/php-jwt/pull/110). Thanks [@gbalduzzi](https://github.com/gbalduzzi)!
|
134 |
+
- Bugfix 'kid' not in given key list.
|
135 |
+
See [#129](https://github.com/firebase/php-jwt/pull/129). Thanks [@stampycode](https://github.com/stampycode)!
|
136 |
+
- Miscellaneous cleanup, documentation and test fixes.
|
137 |
+
See [#107](https://github.com/firebase/php-jwt/pull/107), [#115](https://github.com/firebase/php-jwt/pull/115),
|
138 |
+
[#160](https://github.com/firebase/php-jwt/pull/160), [#161](https://github.com/firebase/php-jwt/pull/161), and
|
139 |
+
[#165](https://github.com/firebase/php-jwt/pull/165). Thanks [@akeeman](https://github.com/akeeman),
|
140 |
+
[@chinedufn](https://github.com/chinedufn), and [@bshaffer](https://github.com/bshaffer)!
|
141 |
+
|
142 |
+
#### 4.0.0 / 2016-07-17
|
143 |
+
- Add support for late static binding. See [#88](https://github.com/firebase/php-jwt/pull/88) for details. Thanks to [@chappy84](https://github.com/chappy84)!
|
144 |
+
- Use static `$timestamp` instead of `time()` to improve unit testing. See [#93](https://github.com/firebase/php-jwt/pull/93) for details. Thanks to [@josephmcdermott](https://github.com/josephmcdermott)!
|
145 |
+
- Fixes to exceptions classes. See [#81](https://github.com/firebase/php-jwt/pull/81) for details. Thanks to [@Maks3w](https://github.com/Maks3w)!
|
146 |
+
- Fixes to PHPDoc. See [#76](https://github.com/firebase/php-jwt/pull/76) for details. Thanks to [@akeeman](https://github.com/akeeman)!
|
147 |
+
|
148 |
#### 3.0.0 / 2015-07-22
|
149 |
- Minimum PHP version updated from `5.2.0` to `5.3.0`.
|
150 |
- Add `\Firebase\JWT` namespace. See
|
189 |
OK (5 tests, 5 assertions)
|
190 |
```
|
191 |
|
192 |
+
New Lines in private keys
|
193 |
+
-----
|
194 |
+
|
195 |
+
If your private key contains `\n` characters, be sure to wrap it in double quotes `""`
|
196 |
+
and not single quotes `''` in order to properly interpret the escaped characters.
|
197 |
+
|
198 |
License
|
199 |
-------
|
200 |
[3-Clause BSD](http://opensource.org/licenses/BSD-3-Clause).
|
vendor/firebase/php-jwt/package.xml
DELETED
@@ -1,77 +0,0 @@
|
|
1 |
-
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
-
<package packagerversion="1.9.2" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
|
3 |
-
http://pear.php.net/dtd/tasks-1.0.xsd
|
4 |
-
http://pear.php.net/dtd/package-2.0
|
5 |
-
http://pear.php.net/dtd/package-2.0.xsd">
|
6 |
-
<name>JWT</name>
|
7 |
-
<channel>pear.php.net</channel>
|
8 |
-
<summary>A JWT encoder/decoder.</summary>
|
9 |
-
<description>A JWT encoder/decoder library for PHP.</description>
|
10 |
-
<lead>
|
11 |
-
<name>Neuman Vong</name>
|
12 |
-
<user>lcfrs</user>
|
13 |
-
<email>neuman+pear@twilio.com</email>
|
14 |
-
<active>yes</active>
|
15 |
-
</lead>
|
16 |
-
<lead>
|
17 |
-
<name>Firebase Operations</name>
|
18 |
-
<user>firebase</user>
|
19 |
-
<email>operations@firebase.com</email>
|
20 |
-
<active>yes</active>
|
21 |
-
</lead>
|
22 |
-
<date>2015-07-22</date>
|
23 |
-
<version>
|
24 |
-
<release>3.0.0</release>
|
25 |
-
<api>3.0.0</api>
|
26 |
-
</version>
|
27 |
-
<stability>
|
28 |
-
<release>beta</release>
|
29 |
-
<api>beta</api>
|
30 |
-
</stability>
|
31 |
-
<license uri="http://opensource.org/licenses/BSD-3-Clause">BSD 3-Clause License</license>
|
32 |
-
<notes>
|
33 |
-
Initial release with basic support for JWT encoding, decoding and signature verification.
|
34 |
-
</notes>
|
35 |
-
<contents>
|
36 |
-
<dir baseinstalldir="/" name="/">
|
37 |
-
<dir name="tests">
|
38 |
-
<file name="JWTTest.php" role="test" />
|
39 |
-
</dir>
|
40 |
-
<file name="Authentication/JWT.php" role="php" />
|
41 |
-
</dir>
|
42 |
-
</contents>
|
43 |
-
<dependencies>
|
44 |
-
<required>
|
45 |
-
<php>
|
46 |
-
<min>5.1</min>
|
47 |
-
</php>
|
48 |
-
<pearinstaller>
|
49 |
-
<min>1.7.0</min>
|
50 |
-
</pearinstaller>
|
51 |
-
<extension>
|
52 |
-
<name>json</name>
|
53 |
-
</extension>
|
54 |
-
<extension>
|
55 |
-
<name>hash</name>
|
56 |
-
</extension>
|
57 |
-
</required>
|
58 |
-
</dependencies>
|
59 |
-
<phprelease />
|
60 |
-
<changelog>
|
61 |
-
<release>
|
62 |
-
<version>
|
63 |
-
<release>0.1.0</release>
|
64 |
-
<api>0.1.0</api>
|
65 |
-
</version>
|
66 |
-
<stability>
|
67 |
-
<release>beta</release>
|
68 |
-
<api>beta</api>
|
69 |
-
</stability>
|
70 |
-
<date>2015-04-01</date>
|
71 |
-
<license uri="http://opensource.org/licenses/BSD-3-Clause">BSD 3-Clause License</license>
|
72 |
-
<notes>
|
73 |
-
Initial release with basic support for JWT encoding, decoding and signature verification.
|
74 |
-
</notes>
|
75 |
-
</release>
|
76 |
-
</changelog>
|
77 |
-
</package>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/firebase/php-jwt/phpunit.xml.dist
DELETED
@@ -1,19 +0,0 @@
|
|
1 |
-
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
-
|
3 |
-
<phpunit backupGlobals="false"
|
4 |
-
backupStaticAttributes="false"
|
5 |
-
colors="true"
|
6 |
-
convertErrorsToExceptions="true"
|
7 |
-
convertNoticesToExceptions="true"
|
8 |
-
convertWarningsToExceptions="true"
|
9 |
-
processIsolation="false"
|
10 |
-
stopOnFailure="false"
|
11 |
-
syntaxCheck="false"
|
12 |
-
bootstrap="tests/bootstrap.php"
|
13 |
-
>
|
14 |
-
<testsuites>
|
15 |
-
<testsuite name="PHP JSON Web Token Test Suite">
|
16 |
-
<directory>./tests</directory>
|
17 |
-
</testsuite>
|
18 |
-
</testsuites>
|
19 |
-
</phpunit>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/firebase/php-jwt/run-tests.sh
DELETED
@@ -1,38 +0,0 @@
|
|
1 |
-
|
2 |
-
#!/usr/bin/env bash
|
3 |
-
gpg --fingerprint D8406D0D82947747293778314AA394086372C20A
|
4 |
-
if [ $? -ne 0 ]; then
|
5 |
-
echo -e "\033[33mDownloading PGP Public Key...\033[0m"
|
6 |
-
gpg --recv-keys D8406D0D82947747293778314AA394086372C20A
|
7 |
-
# Sebastian Bergmann <sb@sebastian-bergmann.de>
|
8 |
-
gpg --fingerprint D8406D0D82947747293778314AA394086372C20A
|
9 |
-
if [ $? -ne 0 ]; then
|
10 |
-
echo -e "\033[31mCould not download PGP public key for verification\033[0m"
|
11 |
-
exit
|
12 |
-
fi
|
13 |
-
fi
|
14 |
-
|
15 |
-
# Let's grab the latest release and its signature
|
16 |
-
if [ ! -f phpunit.phar ]; then
|
17 |
-
wget https://phar.phpunit.de/phpunit.phar
|
18 |
-
fi
|
19 |
-
if [ ! -f phpunit.phar.asc ]; then
|
20 |
-
wget https://phar.phpunit.de/phpunit.phar.asc
|
21 |
-
fi
|
22 |
-
|
23 |
-
# Verify before running
|
24 |
-
gpg --verify phpunit.phar.asc phpunit.phar
|
25 |
-
if [ $? -eq 0 ]; then
|
26 |
-
echo
|
27 |
-
echo -e "\033[33mBegin Unit Testing\033[0m"
|
28 |
-
# Run the testing suite
|
29 |
-
php --version
|
30 |
-
php phpunit.phar --configuration phpunit.xml.dist
|
31 |
-
else
|
32 |
-
echo
|
33 |
-
chmod -x phpunit.phar
|
34 |
-
mv phpunit.phar /tmp/bad-phpunit.phar
|
35 |
-
mv phpunit.phar.asc /tmp/bad-phpunit.phar.asc
|
36 |
-
echo -e "\033[31mSignature did not match! PHPUnit has been moved to /tmp/bad-phpunit.phar\033[0m"
|
37 |
-
exit 1
|
38 |
-
fi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/firebase/php-jwt/src/BeforeValidException.php
CHANGED
@@ -3,5 +3,4 @@ namespace Firebase\JWT;
|
|
3 |
|
4 |
class BeforeValidException extends \UnexpectedValueException
|
5 |
{
|
6 |
-
|
7 |
}
|
3 |
|
4 |
class BeforeValidException extends \UnexpectedValueException
|
5 |
{
|
|
|
6 |
}
|
vendor/firebase/php-jwt/src/ExpiredException.php
CHANGED
@@ -3,5 +3,4 @@ namespace Firebase\JWT;
|
|
3 |
|
4 |
class ExpiredException extends \UnexpectedValueException
|
5 |
{
|
6 |
-
|
7 |
}
|
3 |
|
4 |
class ExpiredException extends \UnexpectedValueException
|
5 |
{
|
|
|
6 |
}
|
vendor/firebase/php-jwt/src/JWK.php
ADDED
@@ -0,0 +1,171 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Firebase\JWT;
|
4 |
+
|
5 |
+
use DomainException;
|
6 |
+
use UnexpectedValueException;
|
7 |
+
|
8 |
+
/**
|
9 |
+
* JSON Web Key implementation, based on this spec:
|
10 |
+
* https://tools.ietf.org/html/draft-ietf-jose-json-web-key-41
|
11 |
+
*
|
12 |
+
* PHP version 5
|
13 |
+
*
|
14 |
+
* @category Authentication
|
15 |
+
* @package Authentication_JWT
|
16 |
+
* @author Bui Sy Nguyen <nguyenbs@gmail.com>
|
17 |
+
* @license http://opensource.org/licenses/BSD-3-Clause 3-clause BSD
|
18 |
+
* @link https://github.com/firebase/php-jwt
|
19 |
+
*/
|
20 |
+
class JWK
|
21 |
+
{
|
22 |
+
/**
|
23 |
+
* Parse a set of JWK keys
|
24 |
+
*
|
25 |
+
* @param array $jwks The JSON Web Key Set as an associative array
|
26 |
+
*
|
27 |
+
* @return array An associative array that represents the set of keys
|
28 |
+
*
|
29 |
+
* @throws InvalidArgumentException Provided JWK Set is empty
|
30 |
+
* @throws UnexpectedValueException Provided JWK Set was invalid
|
31 |
+
* @throws DomainException OpenSSL failure
|
32 |
+
*
|
33 |
+
* @uses parseKey
|
34 |
+
*/
|
35 |
+
public static function parseKeySet(array $jwks)
|
36 |
+
{
|
37 |
+
$keys = array();
|
38 |
+
|
39 |
+
if (!isset($jwks['keys'])) {
|
40 |
+
throw new UnexpectedValueException('"keys" member must exist in the JWK Set');
|
41 |
+
}
|
42 |
+
if (empty($jwks['keys'])) {
|
43 |
+
throw new InvalidArgumentException('JWK Set did not contain any keys');
|
44 |
+
}
|
45 |
+
|
46 |
+
foreach ($jwks['keys'] as $k => $v) {
|
47 |
+
$kid = isset($v['kid']) ? $v['kid'] : $k;
|
48 |
+
if ($key = self::parseKey($v)) {
|
49 |
+
$keys[$kid] = $key;
|
50 |
+
}
|
51 |
+
}
|
52 |
+
|
53 |
+
if (0 === \count($keys)) {
|
54 |
+
throw new UnexpectedValueException('No supported algorithms found in JWK Set');
|
55 |
+
}
|
56 |
+
|
57 |
+
return $keys;
|
58 |
+
}
|
59 |
+
|
60 |
+
/**
|
61 |
+
* Parse a JWK key
|
62 |
+
*
|
63 |
+
* @param array $jwk An individual JWK
|
64 |
+
*
|
65 |
+
* @return resource|array An associative array that represents the key
|
66 |
+
*
|
67 |
+
* @throws InvalidArgumentException Provided JWK is empty
|
68 |
+
* @throws UnexpectedValueException Provided JWK was invalid
|
69 |
+
* @throws DomainException OpenSSL failure
|
70 |
+
*
|
71 |
+
* @uses createPemFromModulusAndExponent
|
72 |
+
*/
|
73 |
+
private static function parseKey(array $jwk)
|
74 |
+
{
|
75 |
+
if (empty($jwk)) {
|
76 |
+
throw new InvalidArgumentException('JWK must not be empty');
|
77 |
+
}
|
78 |
+
if (!isset($jwk['kty'])) {
|
79 |
+
throw new UnexpectedValueException('JWK must contain a "kty" parameter');
|
80 |
+
}
|
81 |
+
|
82 |
+
switch ($jwk['kty']) {
|
83 |
+
case 'RSA':
|
84 |
+
if (\array_key_exists('d', $jwk)) {
|
85 |
+
throw new UnexpectedValueException('RSA private keys are not supported');
|
86 |
+
}
|
87 |
+
if (!isset($jwk['n']) || !isset($jwk['e'])) {
|
88 |
+
throw new UnexpectedValueException('RSA keys must contain values for both "n" and "e"');
|
89 |
+
}
|
90 |
+
|
91 |
+
$pem = self::createPemFromModulusAndExponent($jwk['n'], $jwk['e']);
|
92 |
+
$publicKey = \openssl_pkey_get_public($pem);
|
93 |
+
if (false === $publicKey) {
|
94 |
+
throw new DomainException(
|
95 |
+
'OpenSSL error: ' . \openssl_error_string()
|
96 |
+
);
|
97 |
+
}
|
98 |
+
return $publicKey;
|
99 |
+
default:
|
100 |
+
// Currently only RSA is supported
|
101 |
+
break;
|
102 |
+
}
|
103 |
+
}
|
104 |
+
|
105 |
+
/**
|
106 |
+
* Create a public key represented in PEM format from RSA modulus and exponent information
|
107 |
+
*
|
108 |
+
* @param string $n The RSA modulus encoded in Base64
|
109 |
+
* @param string $e The RSA exponent encoded in Base64
|
110 |
+
*
|
111 |
+
* @return string The RSA public key represented in PEM format
|
112 |
+
*
|
113 |
+
* @uses encodeLength
|
114 |
+
*/
|
115 |
+
private static function createPemFromModulusAndExponent($n, $e)
|
116 |
+
{
|
117 |
+
$modulus = JWT::urlsafeB64Decode($n);
|
118 |
+
$publicExponent = JWT::urlsafeB64Decode($e);
|
119 |
+
|
120 |
+
$components = array(
|
121 |
+
'modulus' => \pack('Ca*a*', 2, self::encodeLength(\strlen($modulus)), $modulus),
|
122 |
+
'publicExponent' => \pack('Ca*a*', 2, self::encodeLength(\strlen($publicExponent)), $publicExponent)
|
123 |
+
);
|
124 |
+
|
125 |
+
$rsaPublicKey = \pack(
|
126 |
+
'Ca*a*a*',
|
127 |
+
48,
|
128 |
+
self::encodeLength(\strlen($components['modulus']) + \strlen($components['publicExponent'])),
|
129 |
+
$components['modulus'],
|
130 |
+
$components['publicExponent']
|
131 |
+
);
|
132 |
+
|
133 |
+
// sequence(oid(1.2.840.113549.1.1.1), null)) = rsaEncryption.
|
134 |
+
$rsaOID = \pack('H*', '300d06092a864886f70d0101010500'); // hex version of MA0GCSqGSIb3DQEBAQUA
|
135 |
+
$rsaPublicKey = \chr(0) . $rsaPublicKey;
|
136 |
+
$rsaPublicKey = \chr(3) . self::encodeLength(\strlen($rsaPublicKey)) . $rsaPublicKey;
|
137 |
+
|
138 |
+
$rsaPublicKey = \pack(
|
139 |
+
'Ca*a*',
|
140 |
+
48,
|
141 |
+
self::encodeLength(\strlen($rsaOID . $rsaPublicKey)),
|
142 |
+
$rsaOID . $rsaPublicKey
|
143 |
+
);
|
144 |
+
|
145 |
+
$rsaPublicKey = "-----BEGIN PUBLIC KEY-----\r\n" .
|
146 |
+
\chunk_split(\base64_encode($rsaPublicKey), 64) .
|
147 |
+
'-----END PUBLIC KEY-----';
|
148 |
+
|
149 |
+
return $rsaPublicKey;
|
150 |
+
}
|
151 |
+
|
152 |
+
/**
|
153 |
+
* DER-encode the length
|
154 |
+
*
|
155 |
+
* DER supports lengths up to (2**8)**127, however, we'll only support lengths up to (2**8)**4. See
|
156 |
+
* {@link http://itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf#p=13 X.690 paragraph 8.1.3} for more information.
|
157 |
+
*
|
158 |
+
* @param int $length
|
159 |
+
* @return string
|
160 |
+
*/
|
161 |
+
private static function encodeLength($length)
|
162 |
+
{
|
163 |
+
if ($length <= 0x7F) {
|
164 |
+
return \chr($length);
|
165 |
+
}
|
166 |
+
|
167 |
+
$temp = \ltrim(\pack('N', $length), \chr(0));
|
168 |
+
|
169 |
+
return \pack('Ca*', 0x80 | \strlen($temp), $temp);
|
170 |
+
}
|
171 |
+
}
|
vendor/firebase/php-jwt/src/JWT.php
CHANGED
@@ -1,6 +1,7 @@
|
|
1 |
<?php
|
2 |
|
3 |
namespace Firebase\JWT;
|
|
|
4 |
use \DomainException;
|
5 |
use \InvalidArgumentException;
|
6 |
use \UnexpectedValueException;
|
@@ -8,7 +9,7 @@ use \DateTime;
|
|
8 |
|
9 |
/**
|
10 |
* JSON Web Token implementation, based on this spec:
|
11 |
-
*
|
12 |
*
|
13 |
* PHP version 5
|
14 |
*
|
@@ -21,6 +22,9 @@ use \DateTime;
|
|
21 |
*/
|
22 |
class JWT
|
23 |
{
|
|
|
|
|
|
|
24 |
|
25 |
/**
|
26 |
* When checking nbf, iat or expiration times,
|
@@ -29,25 +33,35 @@ class JWT
|
|
29 |
*/
|
30 |
public static $leeway = 0;
|
31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
public static $supported_algs = array(
|
|
|
33 |
'HS256' => array('hash_hmac', 'SHA256'),
|
34 |
-
'HS512' => array('hash_hmac', 'SHA512'),
|
35 |
'HS384' => array('hash_hmac', 'SHA384'),
|
|
|
36 |
'RS256' => array('openssl', 'SHA256'),
|
|
|
|
|
37 |
);
|
38 |
|
39 |
/**
|
40 |
* Decodes a JWT string into a PHP object.
|
41 |
*
|
42 |
-
* @param string
|
43 |
-
* @param string|array|
|
44 |
-
*
|
45 |
-
* @param array
|
46 |
-
*
|
47 |
*
|
48 |
* @return object The JWT's payload as a PHP object
|
49 |
*
|
50 |
-
* @throws DomainException Algorithm was not provided
|
51 |
* @throws UnexpectedValueException Provided JWT was invalid
|
52 |
* @throws SignatureInvalidException Provided JWT was invalid because the signature verification failed
|
53 |
* @throws BeforeValidException Provided JWT is trying to be used before it's eligible as defined by 'nbf'
|
@@ -57,65 +71,76 @@ class JWT
|
|
57 |
* @uses jsonDecode
|
58 |
* @uses urlsafeB64Decode
|
59 |
*/
|
60 |
-
public static function decode($jwt, $key, $allowed_algs = array())
|
61 |
{
|
|
|
|
|
62 |
if (empty($key)) {
|
63 |
throw new InvalidArgumentException('Key may not be empty');
|
64 |
}
|
65 |
-
$tks = explode('.', $jwt);
|
66 |
-
if (count($tks) != 3) {
|
67 |
throw new UnexpectedValueException('Wrong number of segments');
|
68 |
}
|
69 |
list($headb64, $bodyb64, $cryptob64) = $tks;
|
70 |
-
if (null === ($header =
|
71 |
throw new UnexpectedValueException('Invalid header encoding');
|
72 |
}
|
73 |
-
if (null === $payload =
|
74 |
throw new UnexpectedValueException('Invalid claims encoding');
|
75 |
}
|
76 |
-
$sig =
|
77 |
-
|
|
|
78 |
if (empty($header->alg)) {
|
79 |
-
throw new
|
80 |
}
|
81 |
-
if (empty(
|
82 |
-
throw new
|
83 |
}
|
84 |
-
if (
|
85 |
-
throw new
|
86 |
}
|
87 |
-
if (
|
|
|
|
|
|
|
|
|
|
|
88 |
if (isset($header->kid)) {
|
|
|
|
|
|
|
89 |
$key = $key[$header->kid];
|
90 |
} else {
|
91 |
-
throw new
|
92 |
}
|
93 |
}
|
94 |
|
95 |
// Check the signature
|
96 |
-
if (!
|
97 |
throw new SignatureInvalidException('Signature verification failed');
|
98 |
}
|
99 |
|
100 |
-
// Check
|
101 |
// token can actually be used. If it's not yet that time, abort.
|
102 |
-
if (isset($payload->nbf) && $payload->nbf > (
|
103 |
throw new BeforeValidException(
|
104 |
-
'Cannot handle token prior to ' . date(DateTime::ISO8601, $payload->nbf)
|
105 |
);
|
106 |
}
|
107 |
|
108 |
// Check that this token has been created before 'now'. This prevents
|
109 |
// using tokens that have been created for later use (and haven't
|
110 |
// correctly used the nbf claim).
|
111 |
-
if (isset($payload->iat) && $payload->iat > (
|
112 |
throw new BeforeValidException(
|
113 |
-
'Cannot handle token prior to ' . date(DateTime::ISO8601, $payload->iat)
|
114 |
);
|
115 |
}
|
116 |
|
117 |
// Check if this token has expired.
|
118 |
-
if (isset($payload->exp) && (
|
119 |
throw new ExpiredException('Expired token');
|
120 |
}
|
121 |
|
@@ -129,7 +154,8 @@ class JWT
|
|
129 |
* @param string $key The secret key.
|
130 |
* If the algorithm used is asymmetric, this is the private key
|
131 |
* @param string $alg The signing algorithm.
|
132 |
-
* Supported algorithms are 'HS256', 'HS384', 'HS512' and '
|
|
|
133 |
* @param array $head An array with header elements to attach
|
134 |
*
|
135 |
* @return string A signed JWT
|
@@ -143,18 +169,18 @@ class JWT
|
|
143 |
if ($keyId !== null) {
|
144 |
$header['kid'] = $keyId;
|
145 |
}
|
146 |
-
if (
|
147 |
-
$header = array_merge($head, $header);
|
148 |
}
|
149 |
$segments = array();
|
150 |
-
$segments[] =
|
151 |
-
$segments[] =
|
152 |
-
$signing_input = implode('.', $segments);
|
153 |
|
154 |
-
$signature =
|
155 |
-
$segments[] =
|
156 |
|
157 |
-
return implode('.', $segments);
|
158 |
}
|
159 |
|
160 |
/**
|
@@ -163,7 +189,7 @@ class JWT
|
|
163 |
* @param string $msg The message to sign
|
164 |
* @param string|resource $key The secret key
|
165 |
* @param string $alg The signing algorithm.
|
166 |
-
* Supported algorithms are 'HS256', 'HS384', 'HS512' and '
|
167 |
*
|
168 |
* @return string An encrypted message
|
169 |
*
|
@@ -171,19 +197,22 @@ class JWT
|
|
171 |
*/
|
172 |
public static function sign($msg, $key, $alg = 'HS256')
|
173 |
{
|
174 |
-
if (empty(
|
175 |
throw new DomainException('Algorithm not supported');
|
176 |
}
|
177 |
-
list($function, $algorithm) =
|
178 |
-
switch($function) {
|
179 |
case 'hash_hmac':
|
180 |
-
return hash_hmac($algorithm, $msg, $key, true);
|
181 |
case 'openssl':
|
182 |
$signature = '';
|
183 |
-
$success = openssl_sign($msg, $signature, $key, $algorithm);
|
184 |
if (!$success) {
|
185 |
throw new DomainException("OpenSSL unable to sign data");
|
186 |
} else {
|
|
|
|
|
|
|
187 |
return $signature;
|
188 |
}
|
189 |
}
|
@@ -204,32 +233,36 @@ class JWT
|
|
204 |
*/
|
205 |
private static function verify($msg, $signature, $key, $alg)
|
206 |
{
|
207 |
-
if (empty(
|
208 |
throw new DomainException('Algorithm not supported');
|
209 |
}
|
210 |
|
211 |
-
list($function, $algorithm) =
|
212 |
-
switch($function) {
|
213 |
case 'openssl':
|
214 |
-
$success = openssl_verify($msg, $signature, $key, $algorithm);
|
215 |
-
if (
|
216 |
-
|
217 |
-
}
|
218 |
-
return
|
219 |
}
|
|
|
|
|
|
|
|
|
220 |
case 'hash_hmac':
|
221 |
default:
|
222 |
-
$hash = hash_hmac($algorithm, $msg, $key, true);
|
223 |
-
if (function_exists('hash_equals')) {
|
224 |
-
return hash_equals($signature, $hash);
|
225 |
}
|
226 |
-
$len = min(
|
227 |
|
228 |
$status = 0;
|
229 |
for ($i = 0; $i < $len; $i++) {
|
230 |
-
$status |= (ord($signature[$i]) ^ ord($hash[$i]));
|
231 |
}
|
232 |
-
$status |= (
|
233 |
|
234 |
return ($status === 0);
|
235 |
}
|
@@ -246,24 +279,24 @@ class JWT
|
|
246 |
*/
|
247 |
public static function jsonDecode($input)
|
248 |
{
|
249 |
-
if (version_compare(PHP_VERSION, '5.4.0', '>=') && !(defined('JSON_C_VERSION') && PHP_INT_SIZE > 4)) {
|
250 |
/** In PHP >=5.4.0, json_decode() accepts an options parameter, that allows you
|
251 |
* to specify that large ints (like Steam Transaction IDs) should be treated as
|
252 |
* strings, rather than the PHP default behaviour of converting them to floats.
|
253 |
*/
|
254 |
-
$obj = json_decode($input, false, 512, JSON_BIGINT_AS_STRING);
|
255 |
} else {
|
256 |
/** Not all servers will support that, however, so for older versions we must
|
257 |
* manually detect large ints in the JSON string and quote them (thus converting
|
258 |
*them to strings) before decoding, hence the preg_replace() call.
|
259 |
*/
|
260 |
-
$max_int_length = strlen((string) PHP_INT_MAX) - 1;
|
261 |
-
$json_without_bigints = preg_replace('/:\s*(-?\d{'.$max_int_length.',})/', ': "$1"', $input);
|
262 |
-
$obj = json_decode($json_without_bigints);
|
263 |
}
|
264 |
|
265 |
-
if (
|
266 |
-
|
267 |
} elseif ($obj === null && $input !== 'null') {
|
268 |
throw new DomainException('Null result with non-null input');
|
269 |
}
|
@@ -281,9 +314,9 @@ class JWT
|
|
281 |
*/
|
282 |
public static function jsonEncode($input)
|
283 |
{
|
284 |
-
$json = json_encode($input);
|
285 |
-
if (
|
286 |
-
|
287 |
} elseif ($json === 'null' && $input !== null) {
|
288 |
throw new DomainException('Null result with non-null input');
|
289 |
}
|
@@ -299,12 +332,12 @@ class JWT
|
|
299 |
*/
|
300 |
public static function urlsafeB64Decode($input)
|
301 |
{
|
302 |
-
$remainder = strlen($input) % 4;
|
303 |
if ($remainder) {
|
304 |
$padlen = 4 - $remainder;
|
305 |
-
$input .= str_repeat('=', $padlen);
|
306 |
}
|
307 |
-
return base64_decode(strtr($input, '-_', '+/'));
|
308 |
}
|
309 |
|
310 |
/**
|
@@ -316,7 +349,7 @@ class JWT
|
|
316 |
*/
|
317 |
public static function urlsafeB64Encode($input)
|
318 |
{
|
319 |
-
return str_replace('=', '', strtr(base64_encode($input), '+/', '-_'));
|
320 |
}
|
321 |
|
322 |
/**
|
@@ -330,8 +363,10 @@ class JWT
|
|
330 |
{
|
331 |
$messages = array(
|
332 |
JSON_ERROR_DEPTH => 'Maximum stack depth exceeded',
|
|
|
333 |
JSON_ERROR_CTRL_CHAR => 'Unexpected control character found',
|
334 |
-
JSON_ERROR_SYNTAX => 'Syntax error, malformed JSON'
|
|
|
335 |
);
|
336 |
throw new DomainException(
|
337 |
isset($messages[$errno])
|
@@ -343,15 +378,135 @@ class JWT
|
|
343 |
/**
|
344 |
* Get the number of bytes in cryptographic strings.
|
345 |
*
|
346 |
-
* @param string
|
347 |
*
|
348 |
* @return int
|
349 |
*/
|
350 |
private static function safeStrlen($str)
|
351 |
{
|
352 |
-
if (function_exists('mb_strlen')) {
|
353 |
-
return mb_strlen($str, '8bit');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
354 |
}
|
355 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
356 |
}
|
357 |
}
|
1 |
<?php
|
2 |
|
3 |
namespace Firebase\JWT;
|
4 |
+
|
5 |
use \DomainException;
|
6 |
use \InvalidArgumentException;
|
7 |
use \UnexpectedValueException;
|
9 |
|
10 |
/**
|
11 |
* JSON Web Token implementation, based on this spec:
|
12 |
+
* https://tools.ietf.org/html/rfc7519
|
13 |
*
|
14 |
* PHP version 5
|
15 |
*
|
22 |
*/
|
23 |
class JWT
|
24 |
{
|
25 |
+
const ASN1_INTEGER = 0x02;
|
26 |
+
const ASN1_SEQUENCE = 0x10;
|
27 |
+
const ASN1_BIT_STRING = 0x03;
|
28 |
|
29 |
/**
|
30 |
* When checking nbf, iat or expiration times,
|
33 |
*/
|
34 |
public static $leeway = 0;
|
35 |
|
36 |
+
/**
|
37 |
+
* Allow the current timestamp to be specified.
|
38 |
+
* Useful for fixing a value within unit testing.
|
39 |
+
*
|
40 |
+
* Will default to PHP time() value if null.
|
41 |
+
*/
|
42 |
+
public static $timestamp = null;
|
43 |
+
|
44 |
public static $supported_algs = array(
|
45 |
+
'ES256' => array('openssl', 'SHA256'),
|
46 |
'HS256' => array('hash_hmac', 'SHA256'),
|
|
|
47 |
'HS384' => array('hash_hmac', 'SHA384'),
|
48 |
+
'HS512' => array('hash_hmac', 'SHA512'),
|
49 |
'RS256' => array('openssl', 'SHA256'),
|
50 |
+
'RS384' => array('openssl', 'SHA384'),
|
51 |
+
'RS512' => array('openssl', 'SHA512'),
|
52 |
);
|
53 |
|
54 |
/**
|
55 |
* Decodes a JWT string into a PHP object.
|
56 |
*
|
57 |
+
* @param string $jwt The JWT
|
58 |
+
* @param string|array|resource $key The key, or map of keys.
|
59 |
+
* If the algorithm used is asymmetric, this is the public key
|
60 |
+
* @param array $allowed_algs List of supported verification algorithms
|
61 |
+
* Supported algorithms are 'ES256', 'HS256', 'HS384', 'HS512', 'RS256', 'RS384', and 'RS512'
|
62 |
*
|
63 |
* @return object The JWT's payload as a PHP object
|
64 |
*
|
|
|
65 |
* @throws UnexpectedValueException Provided JWT was invalid
|
66 |
* @throws SignatureInvalidException Provided JWT was invalid because the signature verification failed
|
67 |
* @throws BeforeValidException Provided JWT is trying to be used before it's eligible as defined by 'nbf'
|
71 |
* @uses jsonDecode
|
72 |
* @uses urlsafeB64Decode
|
73 |
*/
|
74 |
+
public static function decode($jwt, $key, array $allowed_algs = array())
|
75 |
{
|
76 |
+
$timestamp = \is_null(static::$timestamp) ? \time() : static::$timestamp;
|
77 |
+
|
78 |
if (empty($key)) {
|
79 |
throw new InvalidArgumentException('Key may not be empty');
|
80 |
}
|
81 |
+
$tks = \explode('.', $jwt);
|
82 |
+
if (\count($tks) != 3) {
|
83 |
throw new UnexpectedValueException('Wrong number of segments');
|
84 |
}
|
85 |
list($headb64, $bodyb64, $cryptob64) = $tks;
|
86 |
+
if (null === ($header = static::jsonDecode(static::urlsafeB64Decode($headb64)))) {
|
87 |
throw new UnexpectedValueException('Invalid header encoding');
|
88 |
}
|
89 |
+
if (null === $payload = static::jsonDecode(static::urlsafeB64Decode($bodyb64))) {
|
90 |
throw new UnexpectedValueException('Invalid claims encoding');
|
91 |
}
|
92 |
+
if (false === ($sig = static::urlsafeB64Decode($cryptob64))) {
|
93 |
+
throw new UnexpectedValueException('Invalid signature encoding');
|
94 |
+
}
|
95 |
if (empty($header->alg)) {
|
96 |
+
throw new UnexpectedValueException('Empty algorithm');
|
97 |
}
|
98 |
+
if (empty(static::$supported_algs[$header->alg])) {
|
99 |
+
throw new UnexpectedValueException('Algorithm not supported');
|
100 |
}
|
101 |
+
if (!\in_array($header->alg, $allowed_algs)) {
|
102 |
+
throw new UnexpectedValueException('Algorithm not allowed');
|
103 |
}
|
104 |
+
if ($header->alg === 'ES256') {
|
105 |
+
// OpenSSL expects an ASN.1 DER sequence for ES256 signatures
|
106 |
+
$sig = self::signatureToDER($sig);
|
107 |
+
}
|
108 |
+
|
109 |
+
if (\is_array($key) || $key instanceof \ArrayAccess) {
|
110 |
if (isset($header->kid)) {
|
111 |
+
if (!isset($key[$header->kid])) {
|
112 |
+
throw new UnexpectedValueException('"kid" invalid, unable to lookup correct key');
|
113 |
+
}
|
114 |
$key = $key[$header->kid];
|
115 |
} else {
|
116 |
+
throw new UnexpectedValueException('"kid" empty, unable to lookup correct key');
|
117 |
}
|
118 |
}
|
119 |
|
120 |
// Check the signature
|
121 |
+
if (!static::verify("$headb64.$bodyb64", $sig, $key, $header->alg)) {
|
122 |
throw new SignatureInvalidException('Signature verification failed');
|
123 |
}
|
124 |
|
125 |
+
// Check the nbf if it is defined. This is the time that the
|
126 |
// token can actually be used. If it's not yet that time, abort.
|
127 |
+
if (isset($payload->nbf) && $payload->nbf > ($timestamp + static::$leeway)) {
|
128 |
throw new BeforeValidException(
|
129 |
+
'Cannot handle token prior to ' . \date(DateTime::ISO8601, $payload->nbf)
|
130 |
);
|
131 |
}
|
132 |
|
133 |
// Check that this token has been created before 'now'. This prevents
|
134 |
// using tokens that have been created for later use (and haven't
|
135 |
// correctly used the nbf claim).
|
136 |
+
if (isset($payload->iat) && $payload->iat > ($timestamp + static::$leeway)) {
|
137 |
throw new BeforeValidException(
|
138 |
+
'Cannot handle token prior to ' . \date(DateTime::ISO8601, $payload->iat)
|
139 |
);
|
140 |
}
|
141 |
|
142 |
// Check if this token has expired.
|
143 |
+
if (isset($payload->exp) && ($timestamp - static::$leeway) >= $payload->exp) {
|
144 |
throw new ExpiredException('Expired token');
|
145 |
}
|
146 |
|
154 |
* @param string $key The secret key.
|
155 |
* If the algorithm used is asymmetric, this is the private key
|
156 |
* @param string $alg The signing algorithm.
|
157 |
+
* Supported algorithms are 'ES256', 'HS256', 'HS384', 'HS512', 'RS256', 'RS384', and 'RS512'
|
158 |
+
* @param mixed $keyId
|
159 |
* @param array $head An array with header elements to attach
|
160 |
*
|
161 |
* @return string A signed JWT
|
169 |
if ($keyId !== null) {
|
170 |
$header['kid'] = $keyId;
|
171 |
}
|
172 |
+
if (isset($head) && \is_array($head)) {
|
173 |
+
$header = \array_merge($head, $header);
|
174 |
}
|
175 |
$segments = array();
|
176 |
+
$segments[] = static::urlsafeB64Encode(static::jsonEncode($header));
|
177 |
+
$segments[] = static::urlsafeB64Encode(static::jsonEncode($payload));
|
178 |
+
$signing_input = \implode('.', $segments);
|
179 |
|
180 |
+
$signature = static::sign($signing_input, $key, $alg);
|
181 |
+
$segments[] = static::urlsafeB64Encode($signature);
|
182 |
|
183 |
+
return \implode('.', $segments);
|
184 |
}
|
185 |
|
186 |
/**
|
189 |
* @param string $msg The message to sign
|
190 |
* @param string|resource $key The secret key
|
191 |
* @param string $alg The signing algorithm.
|
192 |
+
* Supported algorithms are 'ES256', 'HS256', 'HS384', 'HS512', 'RS256', 'RS384', and 'RS512'
|
193 |
*
|
194 |
* @return string An encrypted message
|
195 |
*
|
197 |
*/
|
198 |
public static function sign($msg, $key, $alg = 'HS256')
|
199 |
{
|
200 |
+
if (empty(static::$supported_algs[$alg])) {
|
201 |
throw new DomainException('Algorithm not supported');
|
202 |
}
|
203 |
+
list($function, $algorithm) = static::$supported_algs[$alg];
|
204 |
+
switch ($function) {
|
205 |
case 'hash_hmac':
|
206 |
+
return \hash_hmac($algorithm, $msg, $key, true);
|
207 |
case 'openssl':
|
208 |
$signature = '';
|
209 |
+
$success = \openssl_sign($msg, $signature, $key, $algorithm);
|
210 |
if (!$success) {
|
211 |
throw new DomainException("OpenSSL unable to sign data");
|
212 |
} else {
|
213 |
+
if ($alg === 'ES256') {
|
214 |
+
$signature = self::signatureFromDER($signature, 256);
|
215 |
+
}
|
216 |
return $signature;
|
217 |
}
|
218 |
}
|
233 |
*/
|
234 |
private static function verify($msg, $signature, $key, $alg)
|
235 |
{
|
236 |
+
if (empty(static::$supported_algs[$alg])) {
|
237 |
throw new DomainException('Algorithm not supported');
|
238 |
}
|
239 |
|
240 |
+
list($function, $algorithm) = static::$supported_algs[$alg];
|
241 |
+
switch ($function) {
|
242 |
case 'openssl':
|
243 |
+
$success = \openssl_verify($msg, $signature, $key, $algorithm);
|
244 |
+
if ($success === 1) {
|
245 |
+
return true;
|
246 |
+
} elseif ($success === 0) {
|
247 |
+
return false;
|
248 |
}
|
249 |
+
// returns 1 on success, 0 on failure, -1 on error.
|
250 |
+
throw new DomainException(
|
251 |
+
'OpenSSL error: ' . \openssl_error_string()
|
252 |
+
);
|
253 |
case 'hash_hmac':
|
254 |
default:
|
255 |
+
$hash = \hash_hmac($algorithm, $msg, $key, true);
|
256 |
+
if (\function_exists('hash_equals')) {
|
257 |
+
return \hash_equals($signature, $hash);
|
258 |
}
|
259 |
+
$len = \min(static::safeStrlen($signature), static::safeStrlen($hash));
|
260 |
|
261 |
$status = 0;
|
262 |
for ($i = 0; $i < $len; $i++) {
|
263 |
+
$status |= (\ord($signature[$i]) ^ \ord($hash[$i]));
|
264 |
}
|
265 |
+
$status |= (static::safeStrlen($signature) ^ static::safeStrlen($hash));
|
266 |
|
267 |
return ($status === 0);
|
268 |
}
|
279 |
*/
|
280 |
public static function jsonDecode($input)
|
281 |
{
|
282 |
+
if (\version_compare(PHP_VERSION, '5.4.0', '>=') && !(\defined('JSON_C_VERSION') && PHP_INT_SIZE > 4)) {
|
283 |
/** In PHP >=5.4.0, json_decode() accepts an options parameter, that allows you
|
284 |
* to specify that large ints (like Steam Transaction IDs) should be treated as
|
285 |
* strings, rather than the PHP default behaviour of converting them to floats.
|
286 |
*/
|
287 |
+
$obj = \json_decode($input, false, 512, JSON_BIGINT_AS_STRING);
|
288 |
} else {
|
289 |
/** Not all servers will support that, however, so for older versions we must
|
290 |
* manually detect large ints in the JSON string and quote them (thus converting
|
291 |
*them to strings) before decoding, hence the preg_replace() call.
|
292 |
*/
|
293 |
+
$max_int_length = \strlen((string) PHP_INT_MAX) - 1;
|
294 |
+
$json_without_bigints = \preg_replace('/:\s*(-?\d{'.$max_int_length.',})/', ': "$1"', $input);
|
295 |
+
$obj = \json_decode($json_without_bigints);
|
296 |
}
|
297 |
|
298 |
+
if ($errno = \json_last_error()) {
|
299 |
+
static::handleJsonError($errno);
|
300 |
} elseif ($obj === null && $input !== 'null') {
|
301 |
throw new DomainException('Null result with non-null input');
|
302 |
}
|
314 |
*/
|
315 |
public static function jsonEncode($input)
|
316 |
{
|
317 |
+
$json = \json_encode($input);
|
318 |
+
if ($errno = \json_last_error()) {
|
319 |
+
static::handleJsonError($errno);
|
320 |
} elseif ($json === 'null' && $input !== null) {
|
321 |
throw new DomainException('Null result with non-null input');
|
322 |
}
|
332 |
*/
|
333 |
public static function urlsafeB64Decode($input)
|
334 |
{
|
335 |
+
$remainder = \strlen($input) % 4;
|
336 |
if ($remainder) {
|
337 |
$padlen = 4 - $remainder;
|
338 |
+
$input .= \str_repeat('=', $padlen);
|
339 |
}
|
340 |
+
return \base64_decode(\strtr($input, '-_', '+/'));
|
341 |
}
|
342 |
|
343 |
/**
|
349 |
*/
|
350 |
public static function urlsafeB64Encode($input)
|
351 |
{
|
352 |
+
return \str_replace('=', '', \strtr(\base64_encode($input), '+/', '-_'));
|
353 |
}
|
354 |
|
355 |
/**
|
363 |
{
|
364 |
$messages = array(
|
365 |
JSON_ERROR_DEPTH => 'Maximum stack depth exceeded',
|
366 |
+
JSON_ERROR_STATE_MISMATCH => 'Invalid or malformed JSON',
|
367 |
JSON_ERROR_CTRL_CHAR => 'Unexpected control character found',
|
368 |
+
JSON_ERROR_SYNTAX => 'Syntax error, malformed JSON',
|
369 |
+
JSON_ERROR_UTF8 => 'Malformed UTF-8 characters' //PHP >= 5.3.3
|
370 |
);
|
371 |
throw new DomainException(
|
372 |
isset($messages[$errno])
|
378 |
/**
|
379 |
* Get the number of bytes in cryptographic strings.
|
380 |
*
|
381 |
+
* @param string $str
|
382 |
*
|
383 |
* @return int
|
384 |
*/
|
385 |
private static function safeStrlen($str)
|
386 |
{
|
387 |
+
if (\function_exists('mb_strlen')) {
|
388 |
+
return \mb_strlen($str, '8bit');
|
389 |
+
}
|
390 |
+
return \strlen($str);
|
391 |
+
}
|
392 |
+
|
393 |
+
/**
|
394 |
+
* Convert an ECDSA signature to an ASN.1 DER sequence
|
395 |
+
*
|
396 |
+
* @param string $sig The ECDSA signature to convert
|
397 |
+
* @return string The encoded DER object
|
398 |
+
*/
|
399 |
+
private static function signatureToDER($sig)
|
400 |
+
{
|
401 |
+
// Separate the signature into r-value and s-value
|
402 |
+
list($r, $s) = \str_split($sig, (int) (\strlen($sig) / 2));
|
403 |
+
|
404 |
+
// Trim leading zeros
|
405 |
+
$r = \ltrim($r, "\x00");
|
406 |
+
$s = \ltrim($s, "\x00");
|
407 |
+
|
408 |
+
// Convert r-value and s-value from unsigned big-endian integers to
|
409 |
+
// signed two's complement
|
410 |
+
if (\ord($r[0]) > 0x7f) {
|
411 |
+
$r = "\x00" . $r;
|
412 |
+
}
|
413 |
+
if (\ord($s[0]) > 0x7f) {
|
414 |
+
$s = "\x00" . $s;
|
415 |
+
}
|
416 |
+
|
417 |
+
return self::encodeDER(
|
418 |
+
self::ASN1_SEQUENCE,
|
419 |
+
self::encodeDER(self::ASN1_INTEGER, $r) .
|
420 |
+
self::encodeDER(self::ASN1_INTEGER, $s)
|
421 |
+
);
|
422 |
+
}
|
423 |
+
|
424 |
+
/**
|
425 |
+
* Encodes a value into a DER object.
|
426 |
+
*
|
427 |
+
* @param int $type DER tag
|
428 |
+
* @param string $value the value to encode
|
429 |
+
* @return string the encoded object
|
430 |
+
*/
|
431 |
+
private static function encodeDER($type, $value)
|
432 |
+
{
|
433 |
+
$tag_header = 0;
|
434 |
+
if ($type === self::ASN1_SEQUENCE) {
|
435 |
+
$tag_header |= 0x20;
|
436 |
+
}
|
437 |
+
|
438 |
+
// Type
|
439 |
+
$der = \chr($tag_header | $type);
|
440 |
+
|
441 |
+
// Length
|
442 |
+
$der .= \chr(\strlen($value));
|
443 |
+
|
444 |
+
return $der . $value;
|
445 |
+
}
|
446 |
+
|
447 |
+
/**
|
448 |
+
* Encodes signature from a DER object.
|
449 |
+
*
|
450 |
+
* @param string $der binary signature in DER format
|
451 |
+
* @param int $keySize the number of bits in the key
|
452 |
+
* @return string the signature
|
453 |
+
*/
|
454 |
+
private static function signatureFromDER($der, $keySize)
|
455 |
+
{
|
456 |
+
// OpenSSL returns the ECDSA signatures as a binary ASN.1 DER SEQUENCE
|
457 |
+
list($offset, $_) = self::readDER($der);
|
458 |
+
list($offset, $r) = self::readDER($der, $offset);
|
459 |
+
list($offset, $s) = self::readDER($der, $offset);
|
460 |
+
|
461 |
+
// Convert r-value and s-value from signed two's compliment to unsigned
|
462 |
+
// big-endian integers
|
463 |
+
$r = \ltrim($r, "\x00");
|
464 |
+
$s = \ltrim($s, "\x00");
|
465 |
+
|
466 |
+
// Pad out r and s so that they are $keySize bits long
|
467 |
+
$r = \str_pad($r, $keySize / 8, "\x00", STR_PAD_LEFT);
|
468 |
+
$s = \str_pad($s, $keySize / 8, "\x00", STR_PAD_LEFT);
|
469 |
+
|
470 |
+
return $r . $s;
|
471 |
+
}
|
472 |
+
|
473 |
+
/**
|
474 |
+
* Reads binary DER-encoded data and decodes into a single object
|
475 |
+
*
|
476 |
+
* @param string $der the binary data in DER format
|
477 |
+
* @param int $offset the offset of the data stream containing the object
|
478 |
+
* to decode
|
479 |
+
* @return array [$offset, $data] the new offset and the decoded object
|
480 |
+
*/
|
481 |
+
private static function readDER($der, $offset = 0)
|
482 |
+
{
|
483 |
+
$pos = $offset;
|
484 |
+
$size = \strlen($der);
|
485 |
+
$constructed = (\ord($der[$pos]) >> 5) & 0x01;
|
486 |
+
$type = \ord($der[$pos++]) & 0x1f;
|
487 |
+
|
488 |
+
// Length
|
489 |
+
$len = \ord($der[$pos++]);
|
490 |
+
if ($len & 0x80) {
|
491 |
+
$n = $len & 0x1f;
|
492 |
+
$len = 0;
|
493 |
+
while ($n-- && $pos < $size) {
|
494 |
+
$len = ($len << 8) | \ord($der[$pos++]);
|
495 |
+
}
|
496 |
}
|
497 |
+
|
498 |
+
// Value
|
499 |
+
if ($type == self::ASN1_BIT_STRING) {
|
500 |
+
$pos++; // Skip the first contents octet (padding indicator)
|
501 |
+
$data = \substr($der, $pos, $len - 1);
|
502 |
+
$pos += $len - 1;
|
503 |
+
} elseif (!$constructed) {
|
504 |
+
$data = \substr($der, $pos, $len);
|
505 |
+
$pos += $len;
|
506 |
+
} else {
|
507 |
+
$data = null;
|
508 |
+
}
|
509 |
+
|
510 |
+
return array($pos, $data);
|
511 |
}
|
512 |
}
|
vendor/firebase/php-jwt/src/SignatureInvalidException.php
CHANGED
@@ -3,5 +3,4 @@ namespace Firebase\JWT;
|
|
3 |
|
4 |
class SignatureInvalidException extends \UnexpectedValueException
|
5 |
{
|
6 |
-
|
7 |
}
|
3 |
|
4 |
class SignatureInvalidException extends \UnexpectedValueException
|
5 |
{
|
|
|
6 |
}
|
vendor/google/apiclient-services/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 |
+
|
vendor/google/apiclient-services/README.md
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Google PHP API Client Services
|
2 |
+
==============================
|
3 |
+
|
4 |
+
## Requirements
|
5 |
+
|
6 |
+
[Google API PHP Client](https://github.com/googleapis/google-api-php-client/releases)
|
7 |
+
|
8 |
+
## Usage in v2 of Google API PHP Client
|
9 |
+
|
10 |
+
This library is automatically updated daily with new API changes, and tagged weekly.
|
11 |
+
It is installed as part of the
|
12 |
+
[Google API PHP Client](https://github.com/googleapis/google-api-php-client/releases)
|
13 |
+
library via Composer, which will pull down the most recent tag.
|
14 |
+
|
15 |
+
## Usage in v1
|
16 |
+
|
17 |
+
If you are currently using the [`v1-master`](https://github.com/googleapis/google-api-php-client/tree/v1-master)
|
18 |
+
branch of the client library, but want to use the latest API services, you can
|
19 |
+
do so by requiring this library directly into your project via the same composer command:
|
20 |
+
|
21 |
+
```sh
|
22 |
+
composer require google/apiclient-services:dev-master
|
23 |
+
```
|
vendor/google/apiclient/CONTRIBUTING.md
DELETED
@@ -1,22 +0,0 @@
|
|
1 |
-
# How to become a contributor and submit your own code
|
2 |
-
|
3 |
-
## Contributor License Agreements
|
4 |
-
|
5 |
-
We'd love to accept your code patches! However, before we can take them, we have to jump a couple of legal hurdles.
|
6 |
-
|
7 |
-
Please fill out either the individual or corporate Contributor License Agreement (CLA).
|
8 |
-
|
9 |
-
* If you are an individual writing original source code and you're sure you own the intellectual property, then you'll need to sign an [individual CLA](http://code.google.com/legal/individual-cla-v1.0.html).
|
10 |
-
* If you work for a company that wants to allow you to contribute your work to this client library, then you'll need to sign a[corporate CLA](http://code.google.com/legal/corporate-cla-v1.0.html).
|
11 |
-
|
12 |
-
Follow either of the two links above to access the appropriate CLA and instructions for how to sign and return it. Once we receive it, we'll add you to the official list of contributors and be able to accept your patches.
|
13 |
-
|
14 |
-
## Submitting Patches
|
15 |
-
|
16 |
-
1. Fork the PHP client library on GitHub
|
17 |
-
1. Decide which code you want to submit. A submission should be a set of changes that addresses one issue in the issue tracker. Please file one change per issue, and address one issue per change. If you want to make a change that doesn't have a corresponding issue in the issue tracker, please file a new ticket!
|
18 |
-
1. Ensure that your code adheres to standard PHP conventions, as used in the rest of the library.
|
19 |
-
1. Ensure that there are unit tests for your code.
|
20 |
-
1. Sign a Contributor License Agreement (see above).
|
21 |
-
1. Submit a pull request with your patch on Github.
|
22 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/google/apiclient/README.md
CHANGED
@@ -1,18 +1,23 @@
|
|
1 |
-
|
2 |
|
3 |
# Google APIs Client Library for PHP #
|
4 |
|
5 |
-
|
6 |
-
The Google API Client Library enables you to work with Google APIs such as Google+, Drive, or YouTube on your server.
|
7 |
|
8 |
-
|
9 |
-
|
|
|
|
|
|
|
|
|
|
|
10 |
|
11 |
## Requirements ##
|
12 |
-
* [PHP 5.4.0 or higher](
|
13 |
|
14 |
## Developer Documentation ##
|
15 |
-
|
|
|
16 |
|
17 |
## Installation ##
|
18 |
|
@@ -20,14 +25,14 @@ You can use **Composer** or simply **Download the Release**
|
|
20 |
|
21 |
### Composer
|
22 |
|
23 |
-
The preferred method is via [composer](https://getcomposer.org). Follow the
|
24 |
[installation instructions](https://getcomposer.org/doc/00-intro.md) if you do not already have
|
25 |
composer installed.
|
26 |
|
27 |
Once composer is installed, execute the following command in your project root to install this library:
|
28 |
|
29 |
```sh
|
30 |
-
composer require google/apiclient
|
31 |
```
|
32 |
|
33 |
Finally, be sure to include the autoloader:
|
@@ -36,9 +41,64 @@ Finally, be sure to include the autoloader:
|
|
36 |
require_once '/path/to/your-project/vendor/autoload.php';
|
37 |
```
|
38 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
39 |
### Download the Release
|
40 |
|
41 |
-
If you
|
42 |
with the name `google-api-php-client-[RELEASE_NAME].zip` for a package including this library and its dependencies.
|
43 |
|
44 |
Uncompress the zip file you download, and include the autoloader in your project:
|
@@ -47,7 +107,7 @@ Uncompress the zip file you download, and include the autoloader in your project
|
|
47 |
require_once '/path/to/google-api-php-client/vendor/autoload.php';
|
48 |
```
|
49 |
|
50 |
-
For additional installation and setup instructions, see [the documentation](
|
51 |
|
52 |
## Examples ##
|
53 |
See the [`examples/`](examples) directory for examples of the key client features. You can
|
@@ -71,10 +131,13 @@ $client->setApplicationName("Client_Library_Examples");
|
|
71 |
$client->setDeveloperKey("YOUR_APP_KEY");
|
72 |
|
73 |
$service = new Google_Service_Books($client);
|
74 |
-
$optParams = array(
|
75 |
-
|
|
|
|
|
|
|
76 |
|
77 |
-
foreach ($results as $item) {
|
78 |
echo $item['volumeInfo']['title'], "<br /> \n";
|
79 |
}
|
80 |
```
|
@@ -83,34 +146,48 @@ foreach ($results as $item) {
|
|
83 |
|
84 |
> An example of this can be seen in [`examples/simple-file-upload.php`](examples/simple-file-upload.php).
|
85 |
|
86 |
-
|
87 |
-
|
88 |
-
1. Follow the instructions to [Create Web Application Credentials](https://developers.google.com/api-client-library/php/auth/web-app#creatingcred)
|
89 |
1. Download the JSON credentials
|
90 |
-
1. Set the path to these credentials using
|
91 |
|
92 |
```php
|
93 |
-
|
|
|
94 |
```
|
95 |
|
96 |
-
1.
|
97 |
|
98 |
```php
|
99 |
-
$client
|
100 |
-
$client->useApplicationDefaultCredentials();
|
101 |
```
|
102 |
|
103 |
-
1.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
104 |
|
105 |
```php
|
106 |
-
|
|
|
|
|
107 |
```
|
108 |
|
109 |
### Authentication with Service Accounts ###
|
110 |
|
111 |
> An example of this can be seen in [`examples/service-account.php`](examples/service-account.php).
|
112 |
|
113 |
-
|
|
|
|
|
|
|
|
|
|
|
114 |
1. Download the JSON credentials
|
115 |
1. Set the path to these credentials using the `GOOGLE_APPLICATION_CREDENTIALS` environment variable:
|
116 |
|
@@ -139,7 +216,7 @@ foreach ($results as $item) {
|
|
139 |
|
140 |
### Making Requests ###
|
141 |
|
142 |
-
The classes used to call the API in [google-api-php-client-services](https://github.com/
|
143 |
|
144 |
A JSON request to the [Datastore API](https://developers.google.com/apis-explorer/#p/datastore/v1beta3/datastore.projects.runQuery) would look like this:
|
145 |
|
@@ -166,7 +243,7 @@ Using this library, the same call would look something like this:
|
|
166 |
|
167 |
```php
|
168 |
// create the datastore service class
|
169 |
-
$datastore = new Google_Service_Datastore($client)
|
170 |
|
171 |
// build the query - this maps directly to the JSON
|
172 |
$query = new Google_Service_Datastore_Query([
|
@@ -189,11 +266,11 @@ $request = new Google_Service_Datastore_RunQueryRequest(['query' => $query]);
|
|
189 |
$response = $datastore->projects->runQuery('YOUR_DATASET_ID', $request);
|
190 |
```
|
191 |
|
192 |
-
However, as each property of the JSON API has a corresponding generated class, the above code could also be written
|
193 |
|
194 |
```php
|
195 |
// create the datastore service class
|
196 |
-
$datastore = new Google_Service_Datastore($client)
|
197 |
|
198 |
// build the query
|
199 |
$request = new Google_Service_Datastore_RunQueryRequest();
|
@@ -223,6 +300,8 @@ The method used is a matter of preference, but *it will be very difficult to use
|
|
223 |
|
224 |
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.
|
225 |
|
|
|
|
|
226 |
The `authorize` method returns an authorized [Guzzle Client](http://docs.guzzlephp.org/), so any request made using the client will contain the corresponding authorization.
|
227 |
|
228 |
```php
|
@@ -246,22 +325,29 @@ $response = $httpClient->get('https://www.googleapis.com/plus/v1/people/me');
|
|
246 |
|
247 |
### Caching ###
|
248 |
|
249 |
-
It is recommended to use another caching library to improve performance. This can be done by passing a [PSR-6](
|
250 |
|
251 |
```php
|
252 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
253 |
$client->setCache($cache);
|
254 |
```
|
255 |
|
256 |
-
In this example we use [
|
257 |
|
258 |
```
|
259 |
-
composer require
|
260 |
```
|
261 |
|
262 |
### Updating Tokens ###
|
263 |
|
264 |
-
When using [Refresh Tokens](https://developers.google.com/identity/protocols/OAuth2InstalledApp#
|
265 |
|
266 |
```php
|
267 |
$logger = new Monolog\Logger;
|
@@ -290,30 +376,47 @@ Now all calls made by this library will appear in the Charles UI.
|
|
290 |
|
291 |
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`.
|
292 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
293 |
### Service Specific Examples ###
|
294 |
|
295 |
YouTube: https://github.com/youtube/api-samples/tree/master/php
|
296 |
|
297 |
-
##
|
298 |
|
299 |
-
|
300 |
|
301 |
-
|
302 |
|
303 |
-
|
304 |
|
305 |
-
|
306 |
|
307 |
-
|
308 |
|
309 |
### I want an example of X! ###
|
310 |
|
311 |
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!
|
312 |
|
313 |
-
### Why do you still support 5.2? ###
|
314 |
-
|
315 |
-
When we started working on the 1.0.0 branch we knew there were several fundamental issues to fix with the 0.6 releases of the library. At that time we looked at the usage of the library, and other related projects, and determined that there was still a large and active base of PHP 5.2 installs. You can see this in statistics such as the PHP versions chart in the WordPress stats: http://wordpress.org/about/stats/. We will keep looking at the types of usage we see, and try to take advantage of newer PHP features where possible.
|
316 |
-
|
317 |
### Why does Google_..._Service have weird names? ###
|
318 |
|
319 |
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.
|
@@ -330,7 +433,7 @@ $opt_params = array(
|
|
330 |
|
331 |
### How do I set a field to null? ###
|
332 |
|
333 |
-
The library strips out nulls from the objects sent to the Google APIs as its the default value of all of the
|
334 |
|
335 |
## Code Quality ##
|
336 |
|
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 |
+
The Google API Client Library enables you to work with Google APIs such as Gmail, Drive or YouTube on your server.
|
|
|
6 |
|
7 |
+
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.
|
8 |
+
|
9 |
+
**NOTE** The actively maintained (v2) version of this client requires PHP 5.4 or above. If you require support for PHP 5.2 or 5.3, use the v1 branch.
|
10 |
+
|
11 |
+
## Google Cloud Platform
|
12 |
+
|
13 |
+
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.
|
14 |
|
15 |
## Requirements ##
|
16 |
+
* [PHP 5.4.0 or higher](https://www.php.net/)
|
17 |
|
18 |
## Developer Documentation ##
|
19 |
+
|
20 |
+
The [docs folder](docs/) provides detailed guides for using this library.
|
21 |
|
22 |
## Installation ##
|
23 |
|
25 |
|
26 |
### Composer
|
27 |
|
28 |
+
The preferred method is via [composer](https://getcomposer.org/). Follow the
|
29 |
[installation instructions](https://getcomposer.org/doc/00-intro.md) if you do not already have
|
30 |
composer installed.
|
31 |
|
32 |
Once composer is installed, execute the following command in your project root to install this library:
|
33 |
|
34 |
```sh
|
35 |
+
composer require google/apiclient:"^2.7"
|
36 |
```
|
37 |
|
38 |
Finally, be sure to include the autoloader:
|
41 |
require_once '/path/to/your-project/vendor/autoload.php';
|
42 |
```
|
43 |
|
44 |
+
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.
|
45 |
+
|
46 |
+
#### Cleaning up unused services
|
47 |
+
|
48 |
+
There are over 200 Google API services. The chances are good that you will not
|
49 |
+
want them all. In order to avoid shipping these dependencies with your code,
|
50 |
+
you can run the `Google_Task_Composer::cleanup` task and specify the services
|
51 |
+
you want to keep in `composer.json`:
|
52 |
+
|
53 |
+
```json
|
54 |
+
{
|
55 |
+
"require": {
|
56 |
+
"google/apiclient": "^2.7"
|
57 |
+
},
|
58 |
+
"scripts": {
|
59 |
+
"post-update-cmd": "Google_Task_Composer::cleanup"
|
60 |
+
},
|
61 |
+
"extra": {
|
62 |
+
"google/apiclient-services": [
|
63 |
+
"Drive",
|
64 |
+
"YouTube"
|
65 |
+
]
|
66 |
+
}
|
67 |
+
}
|
68 |
+
```
|
69 |
+
|
70 |
+
This example will remove all services other than "Drive" and "YouTube" when
|
71 |
+
`composer update` or a fresh `composer install` is run.
|
72 |
+
|
73 |
+
**IMPORTANT**: If you add any services back in `composer.json`, you will need to
|
74 |
+
remove the `vendor/google/apiclient-services` directory explicity for the
|
75 |
+
change you made to have effect:
|
76 |
+
|
77 |
+
```sh
|
78 |
+
rm -r vendor/google/apiclient-services
|
79 |
+
composer update
|
80 |
+
```
|
81 |
+
|
82 |
+
**NOTE**: This command performs an exact match on the service name, so to keep
|
83 |
+
`YouTubeReporting` and `YouTubeAnalytics` as well, you'd need to add each of
|
84 |
+
them explicitly:
|
85 |
+
|
86 |
+
```json
|
87 |
+
{
|
88 |
+
"extra": {
|
89 |
+
"google/apiclient-services": [
|
90 |
+
"Drive",
|
91 |
+
"YouTube",
|
92 |
+
"YouTubeAnalytics",
|
93 |
+
"YouTubeReporting"
|
94 |
+
]
|
95 |
+
}
|
96 |
+
}
|
97 |
+
```
|
98 |
+
|
99 |
### Download the Release
|
100 |
|
101 |
+
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
|
102 |
with the name `google-api-php-client-[RELEASE_NAME].zip` for a package including this library and its dependencies.
|
103 |
|
104 |
Uncompress the zip file you download, and include the autoloader in your project:
|
107 |
require_once '/path/to/google-api-php-client/vendor/autoload.php';
|
108 |
```
|
109 |
|
110 |
+
For additional installation and setup instructions, see [the documentation](docs/).
|
111 |
|
112 |
## Examples ##
|
113 |
See the [`examples/`](examples) directory for examples of the key client features. You can
|
131 |
$client->setDeveloperKey("YOUR_APP_KEY");
|
132 |
|
133 |
$service = new Google_Service_Books($client);
|
134 |
+
$optParams = array(
|
135 |
+
'filter' => 'free-ebooks',
|
136 |
+
'q' => 'Henry David Thoreau'
|
137 |
+
);
|
138 |
+
$results = $service->volumes->listVolumes($optParams);
|
139 |
|
140 |
+
foreach ($results->getItems() as $item) {
|
141 |
echo $item['volumeInfo']['title'], "<br /> \n";
|
142 |
}
|
143 |
```
|
146 |
|
147 |
> An example of this can be seen in [`examples/simple-file-upload.php`](examples/simple-file-upload.php).
|
148 |
|
149 |
+
1. Follow the instructions to [Create Web Application Credentials](docs/oauth-web.md#create-authorization-credentials)
|
|
|
|
|
150 |
1. Download the JSON credentials
|
151 |
+
1. Set the path to these credentials using `Google_Client::setAuthConfig`:
|
152 |
|
153 |
```php
|
154 |
+
$client = new Google_Client();
|
155 |
+
$client->setAuthConfig('/path/to/client_credentials.json');
|
156 |
```
|
157 |
|
158 |
+
1. Set the scopes required for the API you are going to call
|
159 |
|
160 |
```php
|
161 |
+
$client->addScope(Google_Service_Drive::DRIVE);
|
|
|
162 |
```
|
163 |
|
164 |
+
1. Set your application's redirect URI
|
165 |
+
|
166 |
+
```php
|
167 |
+
// Your redirect URI can be any registered URI, but in this example
|
168 |
+
// we redirect back to this same page
|
169 |
+
$redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
|
170 |
+
$client->setRedirectUri($redirect_uri);
|
171 |
+
```
|
172 |
+
|
173 |
+
1. In the script handling the redirect URI, exchange the authorization code for an access token:
|
174 |
|
175 |
```php
|
176 |
+
if (isset($_GET['code'])) {
|
177 |
+
$token = $client->fetchAccessTokenWithAuthCode($_GET['code']);
|
178 |
+
}
|
179 |
```
|
180 |
|
181 |
### Authentication with Service Accounts ###
|
182 |
|
183 |
> An example of this can be seen in [`examples/service-account.php`](examples/service-account.php).
|
184 |
|
185 |
+
Some APIs
|
186 |
+
(such as the [YouTube Data API](https://developers.google.com/youtube/v3/)) do
|
187 |
+
not support service accounts. Check with the specific API documentation if API
|
188 |
+
calls return unexpected 401 or 403 errors.
|
189 |
+
|
190 |
+
1. Follow the instructions to [Create a Service Account](docs/oauth-server.md#creating-a-service-account)
|
191 |
1. Download the JSON credentials
|
192 |
1. Set the path to these credentials using the `GOOGLE_APPLICATION_CREDENTIALS` environment variable:
|
193 |
|
216 |
|
217 |
### Making Requests ###
|
218 |
|
219 |
+
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/).
|
220 |
|
221 |
A JSON request to the [Datastore API](https://developers.google.com/apis-explorer/#p/datastore/v1beta3/datastore.projects.runQuery) would look like this:
|
222 |
|
243 |
|
244 |
```php
|
245 |
// create the datastore service class
|
246 |
+
$datastore = new Google_Service_Datastore($client);
|
247 |
|
248 |
// build the query - this maps directly to the JSON
|
249 |
$query = new Google_Service_Datastore_Query([
|
266 |
$response = $datastore->projects->runQuery('YOUR_DATASET_ID', $request);
|
267 |
```
|
268 |
|
269 |
+
However, as each property of the JSON API has a corresponding generated class, the above code could also be written like this:
|
270 |
|
271 |
```php
|
272 |
// create the datastore service class
|
273 |
+
$datastore = new Google_Service_Datastore($client);
|
274 |
|
275 |
// build the query
|
276 |
$request = new Google_Service_Datastore_RunQueryRequest();
|
300 |
|
301 |
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.
|
302 |
|
303 |
+
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.
|
304 |
+
|
305 |
The `authorize` method returns an authorized [Guzzle Client](http://docs.guzzlephp.org/), so any request made using the client will contain the corresponding authorization.
|
306 |
|
307 |
```php
|
325 |
|
326 |
### Caching ###
|
327 |
|
328 |
+
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:
|
329 |
|
330 |
```php
|
331 |
+
use League\Flysystem\Adapter\Local;
|
332 |
+
use League\Flysystem\Filesystem;
|
333 |
+
use Cache\Adapter\Filesystem\FilesystemCachePool;
|
334 |
+
|
335 |
+
$filesystemAdapter = new Local(__DIR__.'/');
|
336 |
+
$filesystem = new Filesystem($filesystemAdapter);
|
337 |
+
|
338 |
+
$cache = new FilesystemCachePool($filesystem);
|
339 |
$client->setCache($cache);
|
340 |
```
|
341 |
|
342 |
+
In this example we use [PHP Cache](http://www.php-cache.com/). Add this to your project with composer:
|
343 |
|
344 |
```
|
345 |
+
composer require cache/filesystem-adapter
|
346 |
```
|
347 |
|
348 |
### Updating Tokens ###
|
349 |
|
350 |
+
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:
|
351 |
|
352 |
```php
|
353 |
$logger = new Monolog\Logger;
|
376 |
|
377 |
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`.
|
378 |
|
379 |
+
### Controlling HTTP Client Configuration Directly
|
380 |
+
|
381 |
+
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.
|
382 |
+
|
383 |
+
Let's say, for instance, we wished to apply a referrer to each request.
|
384 |
+
|
385 |
+
```php
|
386 |
+
use GuzzleHttp\Client;
|
387 |
+
|
388 |
+
$httpClient = new Client([
|
389 |
+
'headers' => [
|
390 |
+
'referer' => 'mysite.com'
|
391 |
+
]
|
392 |
+
]);
|
393 |
+
|
394 |
+
$client = new Google_Client();
|
395 |
+
$client->setHttpClient($httpClient);
|
396 |
+
```
|
397 |
+
|
398 |
+
Other Guzzle features such as [Handlers and Middleware](http://docs.guzzlephp.org/en/stable/handlers-and-middleware.html) offer even more control.
|
399 |
+
|
400 |
### Service Specific Examples ###
|
401 |
|
402 |
YouTube: https://github.com/youtube/api-samples/tree/master/php
|
403 |
|
404 |
+
## How Do I Contribute? ##
|
405 |
|
406 |
+
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.
|
407 |
|
408 |
+
## Frequently Asked Questions ##
|
409 |
|
410 |
+
### What do I do if something isn't working? ###
|
411 |
|
412 |
+
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
|
413 |
|
414 |
+
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.
|
415 |
|
416 |
### I want an example of X! ###
|
417 |
|
418 |
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!
|
419 |
|
|
|
|
|
|
|
|
|
420 |
### Why does Google_..._Service have weird names? ###
|
421 |
|
422 |
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.
|
433 |
|
434 |
### How do I set a field to null? ###
|
435 |
|
436 |
+
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 `Google_Model::NULL_VALUE`. This is a placeholder that will be replaced with a true null when sent over the wire.
|
437 |
|
438 |
## Code Quality ##
|
439 |
|
vendor/google/apiclient/UPGRADING.md
DELETED
@@ -1,327 +0,0 @@
|
|
1 |
-
Google API Client Upgrade Guide
|
2 |
-
===============================
|
3 |
-
|
4 |
-
1.0 to 2.0
|
5 |
-
----------
|
6 |
-
|
7 |
-
The Google API Client for PHP has undergone major internal changes in `2.0`. Please read through
|
8 |
-
the list below in order to upgrade to the latest version:
|
9 |
-
|
10 |
-
## Installation now uses `Composer`
|
11 |
-
|
12 |
-
**Before**
|
13 |
-
|
14 |
-
The project was cloned in your project and you would run the autoloader from wherever:
|
15 |
-
|
16 |
-
```php
|
17 |
-
// the autoload file was included
|
18 |
-
require_once 'google-api-php-client/src/Google/autoload.php'; // or wherever autoload.php is located
|
19 |
-
// OR classes were added one-by-one
|
20 |
-
require_once 'Google/Client.php';
|
21 |
-
require_once 'Google/Service/YouTube.php';
|
22 |
-
```
|
23 |
-
|
24 |
-
**After**
|
25 |
-
|
26 |
-
This library now uses [composer](https://getcomposer.org) (We suggest installing
|
27 |
-
composer [globally](http://symfony.com/doc/current/cookbook/composer.html)). Add this library by
|
28 |
-
running the following in the root of your project:
|
29 |
-
|
30 |
-
```
|
31 |
-
$ composer require google/apiclient:~2.0
|
32 |
-
```
|
33 |
-
|
34 |
-
This will install this library and generate an autoload file in `vendor/autoload.php` in the root
|
35 |
-
of your project. You can now include this library with the following code:
|
36 |
-
|
37 |
-
```php
|
38 |
-
require_once 'vendor/autoload.php';
|
39 |
-
```
|
40 |
-
|
41 |
-
## Access Tokens are passed around as arrays instead of JSON strings
|
42 |
-
|
43 |
-
**Before**
|
44 |
-
|
45 |
-
```php
|
46 |
-
$accessToken = $client->getAccessToken();
|
47 |
-
print_r($accessToken);
|
48 |
-
// would output:
|
49 |
-
// string(153) "{"access_token":"ya29.FAKsaByOPoddfzvKRo_LBpWWCpVTiAm4BjsvBwxtN7IgSNoUfcErBk_VPl4iAiE1ntb_","token_type":"Bearer","expires_in":3593,"created":1445548590}"
|
50 |
-
file_put_contents($credentialsPath, $accessToken);
|
51 |
-
```
|
52 |
-
|
53 |
-
**After**
|
54 |
-
|
55 |
-
```php
|
56 |
-
$accessToken = $client->getAccessToken();
|
57 |
-
print_r($accessToken);
|
58 |
-
// will output:
|
59 |
-
// array(4) {
|
60 |
-
// ["access_token"]=>
|
61 |
-
// string(73) "ya29.FAKsaByOPoddfzvKRo_LBpWWCpVTiAm4BjsvBwxtN7IgSNoUfcErBk_VPl4iAiE1ntb_"
|
62 |
-
// ["token_type"]=>
|
63 |
-
// string(6) "Bearer"
|
64 |
-
// ["expires_in"]=>
|
65 |
-
// int(3593)
|
66 |
-
// ["created"]=>
|
67 |
-
// int(1445548590)
|
68 |
-
// }
|
69 |
-
file_put_contents($credentialsPath, json_encode($accessToken));
|
70 |
-
```
|
71 |
-
|
72 |
-
## ID Token data is returned as an array
|
73 |
-
|
74 |
-
**Before**
|
75 |
-
|
76 |
-
```php
|
77 |
-
$ticket = $client->verifyIdToken($idToken);
|
78 |
-
$data = $ticket->getAttributes();
|
79 |
-
$userId = $data['payload']['sub'];
|
80 |
-
```
|
81 |
-
|
82 |
-
**After**
|
83 |
-
|
84 |
-
```php
|
85 |
-
$userData = $client->verifyIdToken($idToken);
|
86 |
-
$userId = $userData['sub'];
|
87 |
-
```
|
88 |
-
|
89 |
-
## `Google_Auth_AssertionCredentials` has been removed
|
90 |
-
|
91 |
-
For service accounts, we now use `setAuthConfig` or `useApplicationDefaultCredentials`
|
92 |
-
|
93 |
-
**Before**
|
94 |
-
|
95 |
-
```php
|
96 |
-
$client_email = '1234567890-a1b2c3d4e5f6g7h8i@developer.gserviceaccount.com';
|
97 |
-
$private_key = file_get_contents('MyProject.p12');
|
98 |
-
$scopes = array('https://www.googleapis.com/auth/sqlservice.admin');
|
99 |
-
$credentials = new Google_Auth_AssertionCredentials(
|
100 |
-
$client_email,
|
101 |
-
$scopes,
|
102 |
-
$private_key
|
103 |
-
);
|
104 |
-
```
|
105 |
-
|
106 |
-
**After**
|
107 |
-
|
108 |
-
```php
|
109 |
-
$client->setAuthConfig('/path/to/service-account.json');
|
110 |
-
|
111 |
-
// OR use environment variables (recommended)
|
112 |
-
|
113 |
-
putenv('GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json');
|
114 |
-
$client->useApplicationDefaultCredentials();
|
115 |
-
```
|
116 |
-
|
117 |
-
> Note: P12s are deprecated in favor of service account JSON, which can be generated in the
|
118 |
-
> Credentials section of Google Developer Console.
|
119 |
-
|
120 |
-
In order to impersonate a user, call `setSubject` when your service account
|
121 |
-
credentials are being used.
|
122 |
-
|
123 |
-
**Before**
|
124 |
-
|
125 |
-
```php
|
126 |
-
$user_to_impersonate = 'user@example.org';
|
127 |
-
$credentials = new Google_Auth_AssertionCredentials(
|
128 |
-
$client_email,
|
129 |
-
$scopes,
|
130 |
-
$private_key,
|
131 |
-
'notasecret', // Default P12 password
|
132 |
-
'http://oauth.net/grant_type/jwt/1.0/bearer', // Default grant type
|
133 |
-
$user_to_impersonate,
|
134 |
-
);
|
135 |
-
```
|
136 |
-
|
137 |
-
**After**
|
138 |
-
|
139 |
-
```php
|
140 |
-
$user_to_impersonate = 'user@example.org';
|
141 |
-
$client->setSubject($user_to_impersonate);
|
142 |
-
```
|
143 |
-
|
144 |
-
Additionally, `Google_Client::loadServiceAccountJson` has been removed in favor
|
145 |
-
of `Google_Client::setAuthConfig`:
|
146 |
-
|
147 |
-
**Before**
|
148 |
-
|
149 |
-
```php
|
150 |
-
$scopes = [ Google_Service_Books::BOOKS ];
|
151 |
-
$client->loadServiceAccountJson('/path/to/service-account.json', $scopes);
|
152 |
-
```
|
153 |
-
|
154 |
-
**After**
|
155 |
-
|
156 |
-
```php
|
157 |
-
$scopes = [ Google_Service_Books::BOOKS ];
|
158 |
-
$client->setAuthConfig('/path/to/service-account.json');
|
159 |
-
$client->setScopes($scopes);
|
160 |
-
```
|
161 |
-
|
162 |
-
## `Google_Auth_AppIdentity` has been removed
|
163 |
-
|
164 |
-
For App Engine authentication, we now use the underlying [`google/auth`][Google Auth] and
|
165 |
-
call `useApplicationDefaultCredentials`:
|
166 |
-
|
167 |
-
**Before**
|
168 |
-
|
169 |
-
```php
|
170 |
-
$client->setAuth(new Google_Auth_AppIdentity($client));
|
171 |
-
$client->getAuth()
|
172 |
-
->authenticateForScope('https://www.googleapis.com/auth/sqlservice.admin')
|
173 |
-
```
|
174 |
-
|
175 |
-
**After**
|
176 |
-
|
177 |
-
```php
|
178 |
-
$client->useDefaultApplicationCredentials();
|
179 |
-
$client->addScope('https://www.googleapis.com/auth/sqlservice.admin');
|
180 |
-
```
|
181 |
-
|
182 |
-
This will detect when the App Engine environment is present, and use the appropriate credentials.
|
183 |
-
|
184 |
-
## `Google_Auth_Abstract` classes have been removed
|
185 |
-
|
186 |
-
[`google/auth`][Google Auth] is now used for authentication. As a result, all
|
187 |
-
`Google_Auth`-related functionality has been removed. The methods that were a part of
|
188 |
-
`Google_Auth_Abstract` have been moved into the `Google_Client` object.
|
189 |
-
|
190 |
-
**Before**
|
191 |
-
|
192 |
-
```php
|
193 |
-
$request = new Google_Http_Request();
|
194 |
-
$client->getAuth()->sign($request);
|
195 |
-
```
|
196 |
-
|
197 |
-
**After**
|
198 |
-
|
199 |
-
```php
|
200 |
-
// create an authorized HTTP client
|
201 |
-
$httpClient = $client->authorize();
|
202 |
-
|
203 |
-
// OR add authorization to an existing client
|
204 |
-
$httpClient = new GuzzleHttp\Client();
|
205 |
-
$httpClient = $client->authorize($httpClient);
|
206 |
-
```
|
207 |
-
|
208 |
-
**Before**
|
209 |
-
|
210 |
-
```php
|
211 |
-
$request = new Google_Http_Request();
|
212 |
-
$response = $client->getAuth()->authenticatedRequest($request);
|
213 |
-
```
|
214 |
-
|
215 |
-
**After**
|
216 |
-
|
217 |
-
```php
|
218 |
-
$httpClient = $client->authorize();
|
219 |
-
$request = new GuzzleHttp\Psr7\Request('POST', $url);
|
220 |
-
$response = $httpClient->send($request);
|
221 |
-
```
|
222 |
-
|
223 |
-
> NOTE: `$request` can be any class implementing
|
224 |
-
> `Psr\Http\Message\RequestInterface`
|
225 |
-
|
226 |
-
In addition, other methods that were callable on `Google_Auth_OAuth2` are now called
|
227 |
-
on the `Google_Client` object:
|
228 |
-
|
229 |
-
**Before**
|
230 |
-
|
231 |
-
```php
|
232 |
-
$client->getAuth()->refreshToken($token);
|
233 |
-
$client->getAuth()->refreshTokenWithAssertion();
|
234 |
-
$client->getAuth()->revokeToken($token);
|
235 |
-
$client->getAuth()->isAccessTokenExpired();
|
236 |
-
```
|
237 |
-
|
238 |
-
**After**
|
239 |
-
|
240 |
-
```php
|
241 |
-
$client->refreshToken($token);
|
242 |
-
$client->refreshTokenWithAssertion();
|
243 |
-
$client->revokeToken($token);
|
244 |
-
$client->isAccessTokenExpired();
|
245 |
-
```
|
246 |
-
|
247 |
-
## PHP 5.4 is now the minimum supported PHP version
|
248 |
-
|
249 |
-
This was previously `PHP 5.2`. If you still need to use PHP 5.2, please continue to use
|
250 |
-
the [v1-master](https://github.com/google/google-api-php-client/tree/v1-master) branch.
|
251 |
-
|
252 |
-
## Guzzle and PSR-7 are used for HTTP Requests
|
253 |
-
|
254 |
-
The HTTP library Guzzle is used for all HTTP Requests. By default, [`Guzzle 6`][Guzzle 6]
|
255 |
-
is used, but this library is also compatible with [`Guzzle 5`][Guzzle 5]. As a result,
|
256 |
-
all `Google_IO`-related functionality and `Google_Http`-related functionality has been
|
257 |
-
changed or removed.
|
258 |
-
|
259 |
-
1. Removed `Google_Http_Request`
|
260 |
-
1. Removed `Google_IO_Abstract`, `Google_IO_Exception`, `Google_IO_Curl`, and `Google_IO_Stream`
|
261 |
-
1. Removed methods `Google_Client::getIo` and `Google_Client::setIo`
|
262 |
-
1. Refactored `Google_Http_Batch` and `Google_Http_MediaFileUpload` for Guzzle
|
263 |
-
1. Added `Google_Client::getHttpClient` and `Google_Client::setHttpClient` for getting and
|
264 |
-
setting the Guzzle `GuzzleHttp\ClientInterface` object.
|
265 |
-
|
266 |
-
> NOTE: `PSR-7`-compatible libraries can now be used with this library.
|
267 |
-
|
268 |
-
## Other Changes
|
269 |
-
|
270 |
-
- [`PSR 3`][PSR 3] `LoggerInterface` is now supported, and [Monolog][Monolog] is used for all
|
271 |
-
logging. As a result, all `Google_Logger`-related functionality has been removed:
|
272 |
-
1. Removed `Google_Logger_Abstract`, `Google_Logger_Exception`, `Google_Logger_File`,
|
273 |
-
`Google_Logger_Null`, and `Google_Logger_Psr`
|
274 |
-
1. `Google_Client::setLogger` now requires `Psr\Log\LoggerInterface`
|
275 |
-
- [`firebase/jwt`][Firebase JWT] is now used for all JWT signing and verifying. As a result, the
|
276 |
-
following classes have been changed or removed:
|
277 |
-
1. Removed `Google_Signer_P12`
|
278 |
-
1. Removed `Google_Verifier_Pem`
|
279 |
-
1. Removed `Google_Auth_LoginTicket` (see below)
|
280 |
-
- The following classes and methods have been removed in favor of [`google/auth`][Google Auth]:
|
281 |
-
1. Removed methods `Google_Client::getAuth` and `Google_Client::setAuth`
|
282 |
-
1. Removed `Google_Auth_Abstract`
|
283 |
-
- `Google_Auth_Abstract::sign` and `Google_Auth_Abstract::authenticatedRequest` have been
|
284 |
-
replaced by `Google_Client::authorize`. See the above examples for more details.
|
285 |
-
1. Removed `Google_Auth_AppIdentity`. This is now supported in [`google/auth`][Google Auth AppIdentity]
|
286 |
-
and is used automatically when `Google_Client::useApplicationDefaultCredentials` is called.
|
287 |
-
1. Removed `Google_Auth_AssertionCredentials`. Use `Google_Client::setAuthConfig` instead.
|
288 |
-
1. Removed `Google_Auth_ComputeEngine`. This is now supported in
|
289 |
-
[`google/auth`][Google Auth GCE], and is used automatically when
|
290 |
-
`Google_Client::useApplicationDefaultCredentials` is called.
|
291 |
-
1. Removed `Google_Auth_Exception`
|
292 |
-
1. Removed `Google_Auth_LoginTicket`. Calls to `Google_Client::verifyIdToken` now returns
|
293 |
-
the payload of the ID Token as an array if the verification is successful.
|
294 |
-
1. Removed `Google_Auth_OAuth2`. This functionality is now supported in [`google/auth`][Google Auth OAuth2] and wrapped in `Google_Client`. These changes will only affect applications calling `Google_Client::getAuth`,
|
295 |
-
as the methods on `Google_Client` have not changed.
|
296 |
-
1. Removed `Google_Auth_Simple`. This is now supported in [`google/auth`][Google Auth Simple]
|
297 |
-
and is used automatically when `Google_Client::setDeveloperKey` is called.
|
298 |
-
- `Google_Client::sign` has been replaced by `Google_Client::authorize`. This function
|
299 |
-
now takes a `GuzzleHttp\ClientInterface` object and uses the following decision tree for
|
300 |
-
authentication:
|
301 |
-
1. Uses Application Default Credentials when
|
302 |
-
`Google_Client::useApplicationDefaultCredentials` is called
|
303 |
-
- Looks for `GOOGLE_APPLICATION_CREDENTIALS` environment variable if set
|
304 |
-
- Looks in `~/.config/gcloud/application_default_credentials.json`
|
305 |
-
- Otherwise, uses `GCECredentials`
|
306 |
-
1. Uses API Key if set (see `Client::setDeveloperKey`)
|
307 |
-
1. Uses Access Token if set (call `Client::setAccessToken`)
|
308 |
-
1. Automatically refreshes access tokens if one is set and the access token is expired
|
309 |
-
- Removed `Google_Config`
|
310 |
-
- Removed `Google_Utils`
|
311 |
-
- [`Google\Auth\CacheInterface`][Google Auth CacheInterface] is used for all caching. As a result:
|
312 |
-
1. Removed `Google_Cache_Abstract`
|
313 |
-
1. Classes `Google_Cache_Apc`, `Google_Cache_File`, `Google_Cache_Memcache`, and
|
314 |
-
`Google_Cache_Null` now implement `Google\Auth\CacheInterface`.
|
315 |
-
- Removed `$boundary` constructor argument for `Google_Http_MediaFileUpload`
|
316 |
-
|
317 |
-
[PSR 3]: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md
|
318 |
-
[Guzzle 5]: https://github.com/guzzle/guzzle
|
319 |
-
[Guzzle 6]: http://docs.guzzlephp.org/en/latest/psr7.html
|
320 |
-
[Monolog]: https://github.com/Seldaek/monolog
|
321 |
-
[Google Auth]: https://github.com/google/google-auth-library-php
|
322 |
-
[Google Auth GCE]: https://github.com/google/google-auth-library-php/blob/master/src/GCECredentials.php
|
323 |
-
[Google Auth OAuth2]: https://github.com/google/google-auth-library-php/blob/master/src/OAuth2.php
|
324 |
-
[Google Auth Simple]: https://github.com/google/google-auth-library-php/blob/master/src/Simple.php
|
325 |
-
[Google Auth AppIdentity]: https://github.com/google/google-auth-library-php/blob/master/src/AppIdentityCredentials.php
|
326 |
-
[Google Auth CacheInterface]: https://github.com/google/google-auth-library-php/blob/master/src/CacheInterface.php
|
327 |
-
[Firebase JWT]: https://github.com/firebase/php-jwt
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/google/apiclient/examples/README.md
DELETED
@@ -1,13 +0,0 @@
|
|
1 |
-
# Examples for Google APIs Client Library for PHP #
|
2 |
-
|
3 |
-
## How to run the examples ##
|
4 |
-
|
5 |
-
1. Following the [Installation Instructions](../README.md#installation)
|
6 |
-
1. Run the PHP built-in web server. Supply the `-t` option to point to this directory:
|
7 |
-
|
8 |
-
```
|
9 |
-
$ php -S localhost:8000 -t examples/
|
10 |
-
```
|
11 |
-
|
12 |
-
1. Point your browser to the host and port you specified, i.e `http://localhost:8000`.
|
13 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/google/apiclient/examples/batch.php
DELETED
@@ -1,87 +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 |
-
include_once __DIR__ . '/../vendor/autoload.php';
|
19 |
-
include_once "templates/base.php";
|
20 |
-
|
21 |
-
echo pageHeader("Batching Queries");
|
22 |
-
|
23 |
-
/************************************************
|
24 |
-
We're going to use the simple access to the
|
25 |
-
books API again as an example, but this time we
|
26 |
-
will batch up two queries into a single call.
|
27 |
-
************************************************/
|
28 |
-
|
29 |
-
/************************************************
|
30 |
-
We create the client and set the simple API
|
31 |
-
access key. If you comment out the call to
|
32 |
-
setDeveloperKey, the request may still succeed
|
33 |
-
using the anonymous quota.
|
34 |
-
************************************************/
|
35 |
-
$client = new Google_Client();
|
36 |
-
$client->setApplicationName("Client_Library_Examples");
|
37 |
-
|
38 |
-
// Warn if the API key isn't set.
|
39 |
-
if (!$apiKey = getApiKey()) {
|
40 |
-
echo missingApiKeyWarning();
|
41 |
-
return;
|
42 |
-
}
|
43 |
-
$client->setDeveloperKey($apiKey);
|
44 |
-
|
45 |
-
$service = new Google_Service_Books($client);
|
46 |
-
|
47 |
-
/************************************************
|
48 |
-
To actually make the batch call we need to
|
49 |
-
enable batching on the client - this will apply
|
50 |
-
globally until we set it to false. This causes
|
51 |
-
call to the service methods to return the query
|
52 |
-
rather than immediately executing.
|
53 |
-
************************************************/
|
54 |
-
$client->setUseBatch(true);
|
55 |
-
|
56 |
-
/************************************************
|
57 |
-
We then create a batch, and add each query we
|
58 |
-
want to execute with keys of our choice - these
|
59 |
-
keys will be reflected in the returned array.
|
60 |
-
************************************************/
|
61 |
-
$batch = new Google_Http_Batch($client);
|
62 |
-
$optParams = array('filter' => 'free-ebooks');
|
63 |
-
$req1 = $service->volumes->listVolumes('Henry David Thoreau', $optParams);
|
64 |
-
$batch->add($req1, "thoreau");
|
65 |
-
$req2 = $service->volumes->listVolumes('George Bernard Shaw', $optParams);
|
66 |
-
$batch->add($req2, "shaw");
|
67 |
-
|
68 |
-
/************************************************
|
69 |
-
Executing the batch will send all requests off
|
70 |
-
at once.
|
71 |
-
************************************************/
|
72 |
-
$results = $batch->execute();
|
73 |
-
?>
|
74 |
-
|
75 |
-
<h3>Results Of Call 1:</h3>
|
76 |
-
<?php foreach ($results['response-thoreau'] as $item): ?>
|
77 |
-
<?= $item['volumeInfo']['title'] ?>
|
78 |
-
<br />
|
79 |
-
<?php endforeach ?>
|
80 |
-
|
81 |
-
<h3>Results Of Call 2:</h3>
|
82 |
-
<?php foreach ($results['response-shaw'] as $item): ?>
|
83 |
-
<?= $item['volumeInfo']['title'] ?>
|
84 |
-
<br />
|
85 |
-
<?php endforeach ?>
|
86 |
-
|
87 |
-
<?= pageFooter(__FILE__) ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/google/apiclient/examples/idtoken.php
DELETED
@@ -1,109 +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 |
-
|
18 |
-
include_once __DIR__ . '/../vendor/autoload.php';
|
19 |
-
include_once "templates/base.php";
|
20 |
-
|
21 |
-
echo pageHeader("Retrieving An Id Token");
|
22 |
-
|
23 |
-
/*************************************************
|
24 |
-
* Ensure you've downloaded your oauth credentials
|
25 |
-
************************************************/
|
26 |
-
if (!$oauth_credentials = getOAuthCredentialsFile()) {
|
27 |
-
echo missingOAuth2CredentialsWarning();
|
28 |
-
return;
|
29 |
-
}
|
30 |
-
|
31 |
-
/************************************************
|
32 |
-
* NOTICE:
|
33 |
-
* The redirect URI is to the current page, e.g:
|
34 |
-
* http://localhost:8080/idtoken.php
|
35 |
-
************************************************/
|
36 |
-
$redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
|
37 |
-
|
38 |
-
$client = new Google_Client();
|
39 |
-
$client->setAuthConfig($oauth_credentials);
|
40 |
-
$client->setRedirectUri($redirect_uri);
|
41 |
-
$client->setScopes('email');
|
42 |
-
|
43 |
-
/************************************************
|
44 |
-
* If we're logging out we just need to clear our
|
45 |
-
* local access token in this case
|
46 |
-
************************************************/
|
47 |
-
if (isset($_REQUEST['logout'])) {
|
48 |
-
unset($_SESSION['id_token_token']);
|
49 |
-
}
|
50 |
-
|
51 |
-
|
52 |
-
/************************************************
|
53 |
-
* If we have a code back from the OAuth 2.0 flow,
|
54 |
-
* we need to exchange that with the
|
55 |
-
* Google_Client::fetchAccessTokenWithAuthCode()
|
56 |
-
* function. We store the resultant access token
|
57 |
-
* bundle in the session, and redirect to ourself.
|
58 |
-
************************************************/
|
59 |
-
if (isset($_GET['code'])) {
|
60 |
-
$token = $client->fetchAccessTokenWithAuthCode($_GET['code']);
|
61 |
-
$client->setAccessToken($token);
|
62 |
-
|
63 |
-
// store in the session also
|
64 |
-
$_SESSION['id_token_token'] = $token;
|
65 |
-
|
66 |
-
// redirect back to the example
|
67 |
-
header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
|
68 |
-
}
|
69 |
-
|
70 |
-
/************************************************
|
71 |
-
If we have an access token, we can make
|
72 |
-
requests, else we generate an authentication URL.
|
73 |
-
************************************************/
|
74 |
-
if (
|
75 |
-
!empty($_SESSION['id_token_token'])
|
76 |
-
&& isset($_SESSION['id_token_token']['id_token'])
|
77 |
-
) {
|
78 |
-
$client->setAccessToken($_SESSION['id_token_token']);
|
79 |
-
} else {
|
80 |
-
$authUrl = $client->createAuthUrl();
|
81 |
-
}
|
82 |
-
|
83 |
-
/************************************************
|
84 |
-
If we're signed in we can go ahead and retrieve
|
85 |
-
the ID token, which is part of the bundle of
|
86 |
-
data that is exchange in the authenticate step
|
87 |
-
- we only need to do a network call if we have
|
88 |
-
to retrieve the Google certificate to verify it,
|
89 |
-
and that can be cached.
|
90 |
-
************************************************/
|
91 |
-
if ($client->getAccessToken()) {
|
92 |
-
$token_data = $client->verifyIdToken();
|
93 |
-
}
|
94 |
-
?>
|
95 |
-
|
96 |
-
<div class="box">
|
97 |
-
<?php if (isset($authUrl)): ?>
|
98 |
-
<div class="request">
|
99 |
-
<a class='login' href='<?= $authUrl ?>'>Connect Me!</a>
|
100 |
-
</div>
|
101 |
-
<?php else: ?>
|
102 |
-
<div class="data">
|
103 |
-
<p>Here is the data from your Id Token:</p>
|
104 |
-
<pre><?php var_export($token_data) ?></pre>
|
105 |
-
</div>
|
106 |
-
<?php endif ?>
|
107 |
-
</div>
|
108 |
-
|
109 |
-
<?= pageFooter(__FILE__) ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/google/apiclient/examples/index.php
DELETED
@@ -1,43 +0,0 @@
|
|
1 |
-
<?php include_once "templates/base.php" ?>
|
2 |
-
|
3 |
-
<?php if (!isWebRequest()): ?>
|
4 |
-
To view this example, run the following command from the root directory of this repository:
|
5 |
-
|
6 |
-
php -S localhost:8080 -t examples/
|
7 |
-
|
8 |
-
And then browse to "localhost:8080" in your web browser
|
9 |
-
<?php return ?>
|
10 |
-
<?php endif ?>
|
11 |
-
|
12 |
-
<?= pageHeader("PHP Library Examples"); ?>
|
13 |
-
|
14 |
-
<?php if (isset($_POST['api_key'])): ?>
|
15 |
-
<?php setApiKey($_POST['api_key']) ?>
|
16 |
-
<span class="warn">
|
17 |
-
API Key set!
|
18 |
-
</span>
|
19 |
-
<?php endif ?>
|
20 |
-
|
21 |
-
<?php if (!getApiKey()): ?>
|
22 |
-
<div class="api-key">
|
23 |
-
<strong>You have not entered your API key</strong>
|
24 |
-
<form method="post">
|
25 |
-
API Key:<input type="text" name="api_key" />
|
26 |
-
<input type="submit" />
|
27 |
-
</form>
|
28 |
-
<em>This can be found in the <a href="http://developers.google.com/console" target="_blank">Google API Console</em>
|
29 |
-
</div>
|
30 |
-
<?php endif ?>
|
31 |
-
|
32 |
-
<ul>
|
33 |
-
<li><a href="simple-query.php">A query using simple API access</a></li>
|
34 |
-
<li><a href="url-shortener.php">Authorize a url shortener, using OAuth 2.0 authentication.</a></li>
|
35 |
-
<li><a href="batch.php">An example of combining multiple calls into a batch request</a></li>
|
36 |
-
<li><a href="service-account.php">A query using the service account functionality.</a></li>
|
37 |
-
<li><a href="simple-file-upload.php">An example of a small file upload.</a></li>
|
38 |
-
<li><a href="large-file-upload.php">An example of a large file upload.</a></li>
|
39 |
-
<li><a href="idtoken.php">An example of verifying and retrieving the id token.</a></li>
|
40 |
-
<li><a href="multi-api.php">An example of using multiple APIs.</a></li>
|
41 |
-
</ul>
|
42 |
-
|
43 |
-
<?= pageFooter(); ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/google/apiclient/examples/large-file-upload.php
DELETED
@@ -1,168 +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 |
-
|
18 |
-
include_once __DIR__ . '/../vendor/autoload.php';
|
19 |
-
include_once "templates/base.php";
|
20 |
-
|
21 |
-
echo pageHeader("File Upload - Uploading a large file");
|
22 |
-
|
23 |
-
/*************************************************
|
24 |
-
* Ensure you've downloaded your oauth credentials
|
25 |
-
************************************************/
|
26 |
-
if (!$oauth_credentials = getOAuthCredentialsFile()) {
|
27 |
-
echo missingOAuth2CredentialsWarning();
|
28 |
-
return;
|
29 |
-
}
|
30 |
-
|
31 |
-
/************************************************
|
32 |
-
* The redirect URI is to the current page, e.g:
|
33 |
-
* http://localhost:8080/large-file-upload.php
|
34 |
-
************************************************/
|
35 |
-
$redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
|
36 |
-
|
37 |
-
$client = new Google_Client();
|
38 |
-
$client->setAuthConfig($oauth_credentials);
|
39 |
-
$client->setRedirectUri($redirect_uri);
|
40 |
-
$client->addScope("https://www.googleapis.com/auth/drive");
|
41 |
-
$service = new Google_Service_Drive($client);
|
42 |
-
|
43 |
-
// add "?logout" to the URL to remove a token from the session
|
44 |
-
if (isset($_REQUEST['logout'])) {
|
45 |
-
unset($_SESSION['upload_token']);
|
46 |
-
}
|
47 |
-
|
48 |
-
/************************************************
|
49 |
-
* If we have a code back from the OAuth 2.0 flow,
|
50 |
-
* we need to exchange that with the
|
51 |
-
* Google_Client::fetchAccessTokenWithAuthCode()
|
52 |
-
* function. We store the resultant access token
|
53 |
-
* bundle in the session, and redirect to ourself.
|
54 |
-
************************************************/
|
55 |
-
if (isset($_GET['code'])) {
|
56 |
-
$token = $client->fetchAccessTokenWithAuthCode($_GET['code']);
|
57 |
-
$client->setAccessToken($token);
|
58 |
-
|
59 |
-
// store in the session also
|
60 |
-
$_SESSION['upload_token'] = $token;
|
61 |
-
|
62 |
-
// redirect back to the example
|
63 |
-
header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
|
64 |
-
}
|
65 |
-
|
66 |
-
// set the access token as part of the client
|
67 |
-
if (!empty($_SESSION['upload_token'])) {
|
68 |
-
$client->setAccessToken($_SESSION['upload_token']);
|
69 |
-
if ($client->isAccessTokenExpired()) {
|
70 |
-
unset($_SESSION['upload_token']);
|
71 |
-
}
|
72 |
-
} else {
|
73 |
-
$authUrl = $client->createAuthUrl();
|
74 |
-
}
|
75 |
-
|
76 |
-
/************************************************
|
77 |
-
* If we're signed in then lets try to upload our
|
78 |
-
* file.
|
79 |
-
************************************************/
|
80 |
-
if ($_SERVER['REQUEST_METHOD'] == 'POST' && $client->getAccessToken()) {
|
81 |
-
/************************************************
|
82 |
-
* We'll setup an empty 20MB file to upload.
|
83 |
-
************************************************/
|
84 |
-
DEFINE("TESTFILE", 'testfile.txt');
|
85 |
-
if (!file_exists(TESTFILE)) {
|
86 |
-
$fh = fopen(TESTFILE, 'w');
|
87 |
-
fseek($fh, 1024*1024*20);
|
88 |
-
fwrite($fh, "!", 1);
|
89 |
-
fclose($fh);
|
90 |
-
}
|
91 |
-
|
92 |
-
$file = new Google_Service_Drive_DriveFile();
|
93 |
-
$file->name = "Big File";
|
94 |
-
$chunkSizeBytes = 1 * 1024 * 1024;
|
95 |
-
|
96 |
-
// Call the API with the media upload, defer so it doesn't immediately return.
|
97 |
-
$client->setDefer(true);
|
98 |
-
$request = $service->files->create($file);
|
99 |
-
|
100 |
-
// Create a media file upload to represent our upload process.
|
101 |
-
$media = new Google_Http_MediaFileUpload(
|
102 |
-
$client,
|
103 |
-
$request,
|
104 |
-
'text/plain',
|
105 |
-
null,
|
106 |
-
true,
|
107 |
-
$chunkSizeBytes
|
108 |
-
);
|
109 |
-
$media->setFileSize(filesize(TESTFILE));
|
110 |
-
|
111 |
-
// Upload the various chunks. $status will be false until the process is
|
112 |
-
// complete.
|
113 |
-
$status = false;
|
114 |
-
$handle = fopen(TESTFILE, "rb");
|
115 |
-
while (!$status && !feof($handle)) {
|
116 |
-
// read until you get $chunkSizeBytes from TESTFILE
|
117 |
-
// fread will never return more than 8192 bytes if the stream is read buffered and it does not represent a plain file
|
118 |
-
// An example of a read buffered file is when reading from a URL
|
119 |
-
$chunk = readVideoChunk($handle, $chunkSizeBytes);
|
120 |
-
$status = $media->nextChunk($chunk);
|
121 |
-
}
|
122 |
-
|
123 |
-
// The final value of $status will be the data from the API for the object
|
124 |
-
// that has been uploaded.
|
125 |
-
$result = false;
|
126 |
-
if ($status != false) {
|
127 |
-
$result = $status;
|
128 |
-
}
|
129 |
-
|
130 |
-
fclose($handle);
|
131 |
-
}
|
132 |
-
|
133 |
-
function readVideoChunk ($handle, $chunkSize)
|
134 |
-
{
|
135 |
-
$byteCount = 0;
|
136 |
-
$giantChunk = "";
|
137 |
-
while (!feof($handle)) {
|
138 |
-
// fread will never return more than 8192 bytes if the stream is read buffered and it does not represent a plain file
|
139 |
-
$chunk = fread($handle, 8192);
|
140 |
-
$byteCount += strlen($chunk);
|
141 |
-
$giantChunk .= $chunk;
|
142 |
-
if ($byteCount >= $chunkSize)
|
143 |
-
{
|
144 |
-
return $giantChunk;
|
145 |
-
}
|
146 |
-
}
|
147 |
-
return $giantChunk;
|
148 |
-
}
|
149 |
-
?>
|
150 |
-
|
151 |
-
<div class="box">
|
152 |
-
<?php if (isset($authUrl)): ?>
|
153 |
-
<div class="request">
|
154 |
-
<a class='login' href='<?= $authUrl ?>'>Connect Me!</a>
|
155 |
-
</div>
|
156 |
-
<?php elseif($_SERVER['REQUEST_METHOD'] == 'POST'): ?>
|
157 |
-
<div class="shortened">
|
158 |
-
<p>Your call was successful! Check your drive for this file:</p>
|
159 |
-
<p><a href="https://drive.google.com/open?id=<?= $result->id ?>" target="_blank"><?= $result->name ?></a></p>
|
160 |
-
</div>
|
161 |
-
<?php else: ?>
|
162 |
-
<form method="POST">
|
163 |
-
<input type="submit" value="Click here to upload a large (20MB) test file" />
|
164 |
-
</form>
|
165 |
-
<?php endif ?>
|
166 |
-
</div>
|
167 |
-
|
168 |
-
<?= pageFooter(__FILE__) ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/google/apiclient/examples/multi-api.php
DELETED
@@ -1,120 +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 |
-
|
18 |
-
include_once __DIR__ . '/../vendor/autoload.php';
|
19 |
-
include_once "templates/base.php";
|
20 |
-
|
21 |
-
echo pageHeader("User Query - Multiple APIs");
|
22 |
-
|
23 |
-
|
24 |
-
/*************************************************
|
25 |
-
* Ensure you've downloaded your oauth credentials
|
26 |
-
************************************************/
|
27 |
-
if (!$oauth_credentials = getOAuthCredentialsFile()) {
|
28 |
-
echo missingOAuth2CredentialsWarning();
|
29 |
-
return;
|
30 |
-
}
|
31 |
-
|
32 |
-
/************************************************
|
33 |
-
* The redirect URI is to the current page, e.g:
|
34 |
-
* http://localhost:8080/multi-api.php
|
35 |
-
************************************************/
|
36 |
-
$redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
|
37 |
-
|
38 |
-
$client = new Google_Client();
|
39 |
-
$client->setAuthConfig($oauth_credentials);
|
40 |
-
$client->setRedirectUri($redirect_uri);
|
41 |
-
$client->addScope("https://www.googleapis.com/auth/drive");
|
42 |
-
$client->addScope("https://www.googleapis.com/auth/youtube");
|
43 |
-
|
44 |
-
// add "?logout" to the URL to remove a token from the session
|
45 |
-
if (isset($_REQUEST['logout'])) {
|
46 |
-
unset($_SESSION['multi-api-token']);
|
47 |
-
}
|
48 |
-
|
49 |
-
/************************************************
|
50 |
-
* If we have a code back from the OAuth 2.0 flow,
|
51 |
-
* we need to exchange that with the
|
52 |
-
* Google_Client::fetchAccessTokenWithAuthCode()
|
53 |
-
* function. We store the resultant access token
|
54 |
-
* bundle in the session, and redirect to ourself.
|
55 |
-
************************************************/
|
56 |
-
if (isset($_GET['code'])) {
|
57 |
-
$token = $client->fetchAccessTokenWithAuthCode($_GET['code']);
|
58 |
-
$client->setAccessToken($token);
|
59 |
-
|
60 |
-
// store in the session also
|
61 |
-
$_SESSION['multi-api-token'] = $token;
|
62 |
-
|
63 |
-
// redirect back to the example
|
64 |
-
header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
|
65 |
-
}
|
66 |
-
|
67 |
-
// set the access token as part of the client
|
68 |
-
if (!empty($_SESSION['multi-api-token'])) {
|
69 |
-
$client->setAccessToken($_SESSION['multi-api-token']);
|
70 |
-
if ($client->isAccessTokenExpired()) {
|
71 |
-
unset($_SESSION['multi-api-token']);
|
72 |
-
}
|
73 |
-
} else {
|
74 |
-
$authUrl = $client->createAuthUrl();
|
75 |
-
}
|
76 |
-
|
77 |
-
/************************************************
|
78 |
-
We are going to create both YouTube and Drive
|
79 |
-
services, and query both.
|
80 |
-
************************************************/
|
81 |
-
$yt_service = new Google_Service_YouTube($client);
|
82 |
-
$dr_service = new Google_Service_Drive($client);
|
83 |
-
|
84 |
-
/************************************************
|
85 |
-
If we're signed in, retrieve channels from YouTube
|
86 |
-
and a list of files from Drive.
|
87 |
-
************************************************/
|
88 |
-
if ($client->getAccessToken()) {
|
89 |
-
$_SESSION['multi-api-token'] = $client->getAccessToken();
|
90 |
-
|
91 |
-
$dr_results = $dr_service->files->listFiles(array('pageSize' => 10));
|
92 |
-
|
93 |
-
$yt_channels = $yt_service->channels->listChannels('contentDetails', array("mine" => true));
|
94 |
-
$likePlaylist = $yt_channels[0]->contentDetails->relatedPlaylists->likes;
|
95 |
-
$yt_results = $yt_service->playlistItems->listPlaylistItems(
|
96 |
-
"snippet",
|
97 |
-
array("playlistId" => $likePlaylist)
|
98 |
-
);
|
99 |
-
}
|
100 |
-
?>
|
101 |
-
|
102 |
-
<div class="box">
|
103 |
-
<div class="request">
|
104 |
-
<?php if (isset($authUrl)): ?>
|
105 |
-
<a class="login" href="<?= $authUrl ?>">Connect Me!</a>
|
106 |
-
<?php else: ?>
|
107 |
-
<h3>Results Of Drive List:</h3>
|
108 |
-
<?php foreach ($dr_results as $item): ?>
|
109 |
-
<?= $item->name ?><br />
|
110 |
-
<?php endforeach ?>
|
111 |
-
|
112 |
-
<h3>Results Of YouTube Likes:</h3>
|
113 |
-
<?php foreach ($yt_results as $item): ?>
|
114 |
-
<?= $item['snippet']['title'] ?><br />
|
115 |
-
<?php endforeach ?>
|
116 |
-
<?php endif ?>
|
117 |
-
</div>
|
118 |
-
</div>
|
119 |
-
|
120 |
-
<?= pageFooter(__FILE__) ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/google/apiclient/examples/service-account.php
DELETED
@@ -1,72 +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 |
-
include_once __DIR__ . '/../vendor/autoload.php';
|
19 |
-
include_once "templates/base.php";
|
20 |
-
|
21 |
-
echo pageHeader("Service Account Access");
|
22 |
-
|
23 |
-
/************************************************
|
24 |
-
Make an API request authenticated with a service
|
25 |
-
account.
|
26 |
-
************************************************/
|
27 |
-
|
28 |
-
$client = new Google_Client();
|
29 |
-
|
30 |
-
/************************************************
|
31 |
-
ATTENTION: Fill in these values, or make sure you
|
32 |
-
have set the GOOGLE_APPLICATION_CREDENTIALS
|
33 |
-
environment variable. You can get these credentials
|
34 |
-
by creating a new Service Account in the
|
35 |
-
API console. Be sure to store the key file
|
36 |
-
somewhere you can get to it - though in real
|
37 |
-
operations you'd want to make sure it wasn't
|
38 |
-
accessible from the webserver!
|
39 |
-
Make sure the Books API is enabled on this
|
40 |
-
account as well, or the call will fail.
|
41 |
-
************************************************/
|
42 |
-
|
43 |
-
if ($credentials_file = checkServiceAccountCredentialsFile()) {
|
44 |
-
// set the location manually
|
45 |
-
$client->setAuthConfig($credentials_file);
|
46 |
-
} elseif (getenv('GOOGLE_APPLICATION_CREDENTIALS')) {
|
47 |
-
// use the application default credentials
|
48 |
-
$client->useApplicationDefaultCredentials();
|
49 |
-
} else {
|
50 |
-
echo missingServiceAccountDetailsWarning();
|
51 |
-
return;
|
52 |
-
}
|
53 |
-
|
54 |
-
$client->setApplicationName("Client_Library_Examples");
|
55 |
-
$client->setScopes(['https://www.googleapis.com/auth/books']);
|
56 |
-
$service = new Google_Service_Books($client);
|
57 |
-
|
58 |
-
/************************************************
|
59 |
-
We're just going to make the same call as in the
|
60 |
-
simple query as an example.
|
61 |
-
************************************************/
|
62 |
-
$optParams = array('filter' => 'free-ebooks');
|
63 |
-
$results = $service->volumes->listVolumes('Henry David Thoreau', $optParams);
|
64 |
-
?>
|
65 |
-
|
66 |
-
<h3>Results Of Call:</h3>
|
67 |
-
<?php foreach ($results as $item): ?>
|
68 |
-
<?= $item['volumeInfo']['title'] ?>
|
69 |
-
<br />
|
70 |
-
<?php endforeach ?>
|
71 |
-
|
72 |
-
<?php pageFooter(__FILE__); ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/google/apiclient/examples/simple-file-upload.php
DELETED
@@ -1,135 +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 |
-
|
18 |
-
include_once __DIR__ . '/../vendor/autoload.php';
|
19 |
-
include_once "templates/base.php";
|
20 |
-
|
21 |
-
echo pageHeader("File Upload - Uploading a simple file");
|
22 |
-
|
23 |
-
/*************************************************
|
24 |
-
* Ensure you've downloaded your oauth credentials
|
25 |
-
************************************************/
|
26 |
-
if (!$oauth_credentials = getOAuthCredentialsFile()) {
|
27 |
-
echo missingOAuth2CredentialsWarning();
|
28 |
-
return;
|
29 |
-
}
|
30 |
-
|
31 |
-
/************************************************
|
32 |
-
* The redirect URI is to the current page, e.g:
|
33 |
-
* http://localhost:8080/simple-file-upload.php
|
34 |
-
************************************************/
|
35 |
-
$redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
|
36 |
-
|
37 |
-
$client = new Google_Client();
|
38 |
-
$client->setAuthConfig($oauth_credentials);
|
39 |
-
$client->setRedirectUri($redirect_uri);
|
40 |
-
$client->addScope("https://www.googleapis.com/auth/drive");
|
41 |
-
$service = new Google_Service_Drive($client);
|
42 |
-
|
43 |
-
// add "?logout" to the URL to remove a token from the session
|
44 |
-
if (isset($_REQUEST['logout'])) {
|
45 |
-
unset($_SESSION['upload_token']);
|
46 |
-
}
|
47 |
-
|
48 |
-
/************************************************
|
49 |
-
* If we have a code back from the OAuth 2.0 flow,
|
50 |
-
* we need to exchange that with the
|
51 |
-
* Google_Client::fetchAccessTokenWithAuthCode()
|
52 |
-
* function. We store the resultant access token
|
53 |
-
* bundle in the session, and redirect to ourself.
|
54 |
-
************************************************/
|
55 |
-
if (isset($_GET['code'])) {
|
56 |
-
$token = $client->fetchAccessTokenWithAuthCode($_GET['code']);
|
57 |
-
$client->setAccessToken($token);
|
58 |
-
|
59 |
-
// store in the session also
|
60 |
-
$_SESSION['upload_token'] = $token;
|
61 |
-
|
62 |
-
// redirect back to the example
|
63 |
-
header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
|
64 |
-
}
|
65 |
-
|
66 |
-
// set the access token as part of the client
|
67 |
-
if (!empty($_SESSION['upload_token'])) {
|
68 |
-
$client->setAccessToken($_SESSION['upload_token']);
|
69 |
-
if ($client->isAccessTokenExpired()) {
|
70 |
-
unset($_SESSION['upload_token']);
|
71 |
-
}
|
72 |
-
} else {
|
73 |
-
$authUrl = $client->createAuthUrl();
|
74 |
-
}
|
75 |
-
|
76 |
-
/************************************************
|
77 |
-
* If we're signed in then lets try to upload our
|
78 |
-
* file. For larger files, see fileupload.php.
|
79 |
-
************************************************/
|
80 |
-
if ($_SERVER['REQUEST_METHOD'] == 'POST' && $client->getAccessToken()) {
|
81 |
-
// We'll setup an empty 1MB file to upload.
|
82 |
-
DEFINE("TESTFILE", 'testfile-small.txt');
|
83 |
-
if (!file_exists(TESTFILE)) {
|
84 |
-
$fh = fopen(TESTFILE, 'w');
|
85 |
-
fseek($fh, 1024 * 1024);
|
86 |
-
fwrite($fh, "!", 1);
|
87 |
-
fclose($fh);
|
88 |
-
}
|
89 |
-
|
90 |
-
// This is uploading a file directly, with no metadata associated.
|
91 |
-
$file = new Google_Service_Drive_DriveFile();
|
92 |
-
$result = $service->files->create(
|
93 |
-
$file,
|
94 |
-
array(
|
95 |
-
'data' => file_get_contents(TESTFILE),
|
96 |
-
'mimeType' => 'application/octet-stream',
|
97 |
-
'uploadType' => 'media'
|
98 |
-
)
|
99 |
-
);
|
100 |
-
|
101 |
-
// Now lets try and send the metadata as well using multipart!
|
102 |
-
$file = new Google_Service_Drive_DriveFile();
|
103 |
-
$file->setName("Hello World!");
|
104 |
-
$result2 = $service->files->create(
|
105 |
-
$file,
|
106 |
-
array(
|
107 |
-
'data' => file_get_contents(TESTFILE),
|
108 |
-
'mimeType' => 'application/octet-stream',
|
109 |
-
'uploadType' => 'multipart'
|
110 |
-
)
|
111 |
-
);
|
112 |
-
}
|
113 |
-
?>
|
114 |
-
|
115 |
-
<div class="box">
|
116 |
-
<?php if (isset($authUrl)): ?>
|
117 |
-
<div class="request">
|
118 |
-
<a class='login' href='<?= $authUrl ?>'>Connect Me!</a>
|
119 |
-
</div>
|
120 |
-
<?php elseif($_SERVER['REQUEST_METHOD'] == 'POST'): ?>
|
121 |
-
<div class="shortened">
|
122 |
-
<p>Your call was successful! Check your drive for the following files:</p>
|
123 |
-
<ul>
|
124 |
-
<li><a href="https://drive.google.com/open?id=<?= $result->id ?>" target="_blank"><?= $result->name ?></a></li>
|
125 |
-
<li><a href="https://drive.google.com/open?id=<?= $result2->id ?>" target="_blank"><?= $result2->name ?></a></li>
|
126 |
-
</ul>
|
127 |
-
</div>
|
128 |
-
<?php else: ?>
|
129 |
-
<form method="POST">
|
130 |
-
<input type="submit" value="Click here to upload two small (1MB) test files" />
|
131 |
-
</form>
|
132 |
-
<?php endif ?>
|
133 |
-
</div>
|
134 |
-
|
135 |
-
<?= pageFooter(__FILE__) ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/google/apiclient/examples/simple-query.php
DELETED
@@ -1,84 +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 |
-
include_once __DIR__ . '/../vendor/autoload.php';
|
19 |
-
include_once "templates/base.php";
|
20 |
-
|
21 |
-
echo pageHeader("Simple API Access");
|
22 |
-
|
23 |
-
/************************************************
|
24 |
-
We create the client and set the simple API
|
25 |
-
access key. If you comment out the call to
|
26 |
-
setDeveloperKey, the request may still succeed
|
27 |
-
using the anonymous quota.
|
28 |
-
************************************************/
|
29 |
-
$client = new Google_Client();
|
30 |
-
$client->setApplicationName("Client_Library_Examples");
|
31 |
-
|
32 |
-
// Warn if the API key isn't set.
|
33 |
-
if (!$apiKey = getApiKey()) {
|
34 |
-
echo missingApiKeyWarning();
|
35 |
-
return;
|
36 |
-
}
|
37 |
-
$client->setDeveloperKey($apiKey);
|
38 |
-
|
39 |
-
$service = new Google_Service_Books($client);
|
40 |
-
|
41 |
-
/************************************************
|
42 |
-
We make a call to our service, which will
|
43 |
-
normally map to the structure of the API.
|
44 |
-
In this case $service is Books API, the
|
45 |
-
resource is volumes, and the method is
|
46 |
-
listVolumes. We pass it a required parameters
|
47 |
-
(the query), and an array of named optional
|
48 |
-
parameters.
|
49 |
-
************************************************/
|
50 |
-
$optParams = array('filter' => 'free-ebooks');
|
51 |
-
$results = $service->volumes->listVolumes('Henry David Thoreau', $optParams);
|
52 |
-
|
53 |
-
/************************************************
|
54 |
-
This is an example of deferring a call.
|
55 |
-
***********************************************/
|
56 |
-
$client->setDefer(true);
|
57 |
-
$optParams = array('filter' => 'free-ebooks');
|
58 |
-
$request = $service->volumes->listVolumes('Henry David Thoreau', $optParams);
|
59 |
-
$resultsDeferred = $client->execute($request);
|
60 |
-
|
61 |
-
/************************************************
|
62 |
-
These calls returns a list of volumes, so we
|
63 |
-
can iterate over them as normal with any
|
64 |
-
array.
|
65 |
-
Some calls will return a single item which we
|
66 |
-
can immediately use. The individual responses
|
67 |
-
are typed as Google_Service_Books_Volume, but
|
68 |
-
can be treated as an array.
|
69 |
-
************************************************/
|
70 |
-
?>
|
71 |
-
|
72 |
-
<h3>Results Of Call:</h3>
|
73 |
-
<?php foreach ($results as $item): ?>
|
74 |
-
<?= $item['volumeInfo']['title'] ?>
|
75 |
-
<br />
|
76 |
-
<?php endforeach ?>
|
77 |
-
|
78 |
-
<h3>Results Of Deferred Call:</h3>
|
79 |
-
<?php foreach ($resultsDeferred as $item): ?>
|
80 |
-
<?= $item['volumeInfo']['title'] ?>
|
81 |
-
<br />
|
82 |
-
<?php endforeach ?>
|
83 |
-
|
84 |
-
<?= pageFooter(__FILE__) ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/google/apiclient/examples/styles/style.css
DELETED
@@ -1,117 +0,0 @@
|
|
1 |
-
/*
|
2 |
-
* Copyright 2013 Google Inc.
|
3 |
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
4 |
-
* you may not use this file except in compliance with the License.
|
5 |
-
* You may obtain a copy of the License at
|
6 |
-
*
|
7 |
-
* http://www.apache.org/licenses/LICENSE-2.0
|
8 |
-
*
|
9 |
-
* Unless required by applicable law or agreed to in writing, software
|
10 |
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
11 |
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12 |
-
* See the License for the specific language governing permissions and
|
13 |
-
* limitations under the License.
|
14 |
-
*/
|
15 |
-
|
16 |
-
body {
|
17 |
-
font-family: Arial,sans-serif;
|
18 |
-
margin: auto;
|
19 |
-
padding: 10px;
|
20 |
-
}
|
21 |
-
|
22 |
-
.box {
|
23 |
-
border: .5em solid #E3E9FF;
|
24 |
-
-webkit-box-orient: vertical;
|
25 |
-
-webkit-box-align: center;
|
26 |
-
|
27 |
-
-moz-box-orient: vertical;
|
28 |
-
-moz-box-align: center;
|
29 |
-
|
30 |
-
display: block;
|
31 |
-
box-orient: vertical;
|
32 |
-
box-align: center;
|
33 |
-
|
34 |
-
width: 400px;
|
35 |
-
height: auto;
|
36 |
-
|
37 |
-
margin: auto;
|
38 |
-
padding: 10px;
|
39 |
-
overflow: scroll;
|
40 |
-
}
|
41 |
-
|
42 |
-
.request {
|
43 |
-
-webkit-box-flex: 1;
|
44 |
-
-moz-box-flex: 1;
|
45 |
-
box-flex: 1;
|
46 |
-
}
|
47 |
-
|
48 |
-
.result {
|
49 |
-
-webkit-box-flex: 2;
|
50 |
-
-moz-box-flex: 2;
|
51 |
-
box-flex: 2;
|
52 |
-
}
|
53 |
-
|
54 |
-
header {
|
55 |
-
color:#000;
|
56 |
-
padding:2px 5px;
|
57 |
-
font-size:100%;
|
58 |
-
margin: auto;
|
59 |
-
text-align: center
|
60 |
-
}
|
61 |
-
|
62 |
-
header h1.logo {
|
63 |
-
margin:6px 0;
|
64 |
-
padding:0;
|
65 |
-
font-size:24px;
|
66 |
-
line-height:20px;
|
67 |
-
text-align: center
|
68 |
-
}
|
69 |
-
|
70 |
-
.login {
|
71 |
-
font-size: 200%;
|
72 |
-
display: block;
|
73 |
-
margin: auto;
|
74 |
-
cursor: pointer;
|
75 |
-
text-align: center;
|
76 |
-
font-weight: bold;
|
77 |
-
color: #2779AA;
|
78 |
-
line-height: normal;
|
79 |
-
}
|
80 |
-
|
81 |
-
.logout {
|
82 |
-
font-weight: normal;
|
83 |
-
margin-top: 0;
|
84 |
-
}
|
85 |
-
|
86 |
-
.shortened {
|
87 |
-
overflow: scroll;
|
88 |
-
}
|
89 |
-
|
90 |
-
.url {
|
91 |
-
color: #019;
|
92 |
-
font-size: 100%;
|
93 |
-
vertical-align: middle;
|
94 |
-
padding: 1px;
|
95 |
-
background-color: white;
|
96 |
-
border: 1px inset;
|
97 |
-
cursor: auto;
|
98 |
-
margin: 0;
|
99 |
-
text-indent: 0;
|
100 |
-
display: inline-block;
|
101 |
-
}
|
102 |
-
|
103 |
-
pre.code {
|
104 |
-
padding: 10px;
|
105 |
-
border: .5em solid #E3E9FF;
|
106 |
-
margin: 10px;
|
107 |
-
height: 400px;
|
108 |
-
overflow: scroll;
|
109 |
-
}
|
110 |
-
|
111 |
-
.warn {
|
112 |
-
color: red;
|
113 |
-
}
|
114 |
-
|
115 |
-
.api-key {
|
116 |
-
background-color:#DDD;
|
117 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/google/apiclient/examples/templates/base.php
DELETED
@@ -1,141 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/* Ad hoc functions to make the examples marginally prettier.*/
|
4 |
-
function isWebRequest()
|
5 |
-
{
|
6 |
-
return isset($_SERVER['HTTP_USER_AGENT']);
|
7 |
-
}
|
8 |
-
|
9 |
-
function pageHeader($title)
|
10 |
-
{
|
11 |
-
$ret = "<!doctype html>
|
12 |
-
<html>
|
13 |
-
<head>
|
14 |
-
<title>" . $title . "</title>
|
15 |
-
<link href='styles/style.css' rel='stylesheet' type='text/css' />
|
16 |
-
</head>
|
17 |
-
<body>\n";
|
18 |
-
if ($_SERVER['PHP_SELF'] != "/index.php") {
|
19 |
-
$ret .= "<p><a href='index.php'>Back</a></p>";
|
20 |
-
}
|
21 |
-
$ret .= "<header><h1>" . $title . "</h1></header>";
|
22 |
-
|
23 |
-
// Start the session (for storing access tokens and things)
|
24 |
-
if (!headers_sent()) {
|
25 |
-
session_start();
|
26 |
-
}
|
27 |
-
|
28 |
-
return $ret;
|
29 |
-
}
|
30 |
-
|
31 |
-
|
32 |
-
function pageFooter($file = null)
|
33 |
-
{
|
34 |
-
$ret = "";
|
35 |
-
if ($file) {
|
36 |
-
$ret .= "<h3>Code:</h3>";
|
37 |
-
$ret .= "<pre class='code'>";
|
38 |
-
$ret .= htmlspecialchars(file_get_contents($file));
|
39 |
-
$ret .= "</pre>";
|
40 |
-
}
|
41 |
-
$ret .= "</html>";
|
42 |
-
|
43 |
-
return $ret;
|
44 |
-
}
|
45 |
-
|
46 |
-
function missingApiKeyWarning()
|
47 |
-
{
|
48 |
-
$ret = "
|
49 |
-
<h3 class='warn'>
|
50 |
-
Warning: You need to set a Simple API Access key from the
|
51 |
-
<a href='http://developers.google.com/console'>Google API console</a>
|
52 |
-
</h3>";
|
53 |
-
|
54 |
-
return $ret;
|
55 |
-
}
|
56 |
-
|
57 |
-
function missingClientSecretsWarning()
|
58 |
-
{
|
59 |
-
$ret = "
|
60 |
-
<h3 class='warn'>
|
61 |
-
Warning: You need to set Client ID, Client Secret and Redirect URI from the
|
62 |
-
<a href='http://developers.google.com/console'>Google API console</a>
|
63 |
-
</h3>";
|
64 |
-
|
65 |
-
return $ret;
|
66 |
-
}
|
67 |
-
|
68 |
-
function missingServiceAccountDetailsWarning()
|
69 |
-
{
|
70 |
-
$ret = "
|
71 |
-
<h3 class='warn'>
|
72 |
-
Warning: You need download your Service Account Credentials JSON from the
|
73 |
-
<a href='http://developers.google.com/console'>Google API console</a>.
|
74 |
-
</h3>
|
75 |
-
<p>
|
76 |
-
Once downloaded, move them into the root directory of this repository and
|
77 |
-
rename them 'service-account-credentials.json'.
|
78 |
-
</p>
|
79 |
-
<p>
|
80 |
-
In your application, you should set the GOOGLE_APPLICATION_CREDENTIALS environment variable
|
81 |
-
as the path to this file, but in the context of this example we will do this for you.
|
82 |
-
</p>";
|
83 |
-
|
84 |
-
return $ret;
|
85 |
-
}
|
86 |
-
|
87 |
-
function missingOAuth2CredentialsWarning()
|
88 |
-
{
|
89 |
-
$ret = "
|
90 |
-
<h3 class='warn'>
|
91 |
-
Warning: You need to set the location of your OAuth2 Client Credentials from the
|
92 |
-
<a href='http://developers.google.com/console'>Google API console</a>.
|
93 |
-
</h3>
|
94 |
-
<p>
|
95 |
-
Once downloaded, move them into the root directory of this repository and
|
96 |
-
rename them 'oauth-credentials.json'.
|
97 |
-
</p>";
|
98 |
-
|
99 |
-
return $ret;
|
100 |
-
}
|
101 |
-
|
102 |
-
function checkServiceAccountCredentialsFile()
|
103 |
-
{
|
104 |
-
// service account creds
|
105 |
-
$application_creds = __DIR__ . '/../../service-account-credentials.json';
|
106 |
-
|
107 |
-
return file_exists($application_creds) ? $application_creds : false;
|
108 |
-
}
|
109 |
-
|
110 |
-
function getOAuthCredentialsFile()
|
111 |
-
{
|
112 |
-
// oauth2 creds
|
113 |
-
$oauth_creds = __DIR__ . '/../../oauth-credentials.json';
|
114 |
-
|
115 |
-
if (file_exists($oauth_creds)) {
|
116 |
-
return $oauth_creds;
|
117 |
-
}
|
118 |
-
|
119 |
-
return false;
|
120 |
-
}
|
121 |
-
|
122 |
-
function setClientCredentialsFile($apiKey)
|
123 |
-
{
|
124 |
-
$file = __DIR__ . '/../../tests/.apiKey';
|
125 |
-
file_put_contents($file, $apiKey);
|
126 |
-
}
|
127 |
-
|
128 |
-
|
129 |
-
function getApiKey()
|
130 |
-
{
|
131 |
-
$file = __DIR__ . '/../../tests/.apiKey';
|
132 |
-
if (file_exists($file)) {
|
133 |
-
return file_get_contents($file);
|
134 |
-
}
|
135 |
-
}
|
136 |
-
|
137 |
-
function setApiKey($apiKey)
|
138 |
-
{
|
139 |
-
$file = __DIR__ . '/../../tests/.apiKey';
|
140 |
-
file_put_contents($file, $apiKey);
|
141 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/google/apiclient/examples/url-shortener.php
DELETED
@@ -1,133 +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 |
-
|
18 |
-
include_once __DIR__ . '/../vendor/autoload.php';
|
19 |
-
include_once "templates/base.php";
|
20 |
-
|
21 |
-
echo pageHeader('User Query - URL Shortener');
|
22 |
-
|
23 |
-
/*************************************************
|
24 |
-
* Ensure you've downloaded your oauth credentials
|
25 |
-
************************************************/
|
26 |
-
if (!$oauth_credentials = getOAuthCredentialsFile()) {
|
27 |
-
echo missingOAuth2CredentialsWarning();
|
28 |
-
return;
|
29 |
-
}
|
30 |
-
|
31 |
-
/************************************************
|
32 |
-
Make an API request on behalf of a user. In
|
33 |
-
this case we need to have a valid OAuth 2.0
|
34 |
-
token for the user, so we need to send them
|
35 |
-
through a login flow. To do this we need some
|
36 |
-
information from our API console project.
|
37 |
-
************************************************/
|
38 |
-
/************************************************
|
39 |
-
* NOTICE:
|
40 |
-
* The redirect URI is to this page, e.g:
|
41 |
-
* http://localhost:8080/simplefileupload.php
|
42 |
-
************************************************/
|
43 |
-
$redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
|
44 |
-
|
45 |
-
$client = new Google_Client();
|
46 |
-
$client->setAuthConfig($oauth_credentials);
|
47 |
-
$client->setRedirectUri($redirect_uri);
|
48 |
-
$client->addScope("https://www.googleapis.com/auth/urlshortener");
|
49 |
-
|
50 |
-
/************************************************
|
51 |
-
* When we create the service here, we pass the
|
52 |
-
* client to it. The client then queries the service
|
53 |
-
* for the required scopes, and uses that when
|
54 |
-
* generating the authentication URL later.
|
55 |
-
************************************************/
|
56 |
-
$service = new Google_Service_Urlshortener($client);
|
57 |
-
|
58 |
-
/************************************************
|
59 |
-
* If we're logging out we just need to clear our
|
60 |
-
* local access token in this case
|
61 |
-
************************************************/
|
62 |
-
if (isset($_REQUEST['logout'])) {
|
63 |
-
unset($_SESSION['access_token']);
|
64 |
-
}
|
65 |
-
|
66 |
-
/************************************************
|
67 |
-
* If we have a code back from the OAuth 2.0 flow,
|
68 |
-
* we need to exchange that with the
|
69 |
-
* Google_Client::fetchAccessTokenWithAuthCode()
|
70 |
-
* function. We store the resultant access token
|
71 |
-
* bundle in the session, and redirect to ourself.
|
72 |
-
************************************************/
|
73 |
-
if (isset($_GET['code'])) {
|
74 |
-
$token = $client->fetchAccessTokenWithAuthCode($_GET['code']);
|
75 |
-
$client->setAccessToken($token);
|
76 |
-
|
77 |
-
// store in the session also
|
78 |
-
$_SESSION['access_token'] = $token;
|
79 |
-
|
80 |
-
// redirect back to the example
|
81 |
-
header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
|
82 |
-
}
|
83 |
-
|
84 |
-
/************************************************
|
85 |
-
If we have an access token, we can make
|
86 |
-
requests, else we generate an authentication URL.
|
87 |
-
************************************************/
|
88 |
-
if (isset($_SESSION['access_token']) && $_SESSION['access_token']) {
|
89 |
-
$client->setAccessToken($_SESSION['access_token']);
|
90 |
-
} else {
|
91 |
-
$authUrl = $client->createAuthUrl();
|
92 |
-
}
|
93 |
-
|
94 |
-
/************************************************
|
95 |
-
If we're signed in and have a request to shorten
|
96 |
-
a URL, then we create a new URL object, set the
|
97 |
-
unshortened URL, and call the 'insert' method on
|
98 |
-
the 'url' resource. Note that we re-store the
|
99 |
-
access_token bundle, just in case anything
|
100 |
-
changed during the request - the main thing that
|
101 |
-
might happen here is the access token itself is
|
102 |
-
refreshed if the application has offline access.
|
103 |
-
************************************************/
|
104 |
-
if ($client->getAccessToken() && isset($_GET['url'])) {
|
105 |
-
$url = new Google_Service_Urlshortener_Url();
|
106 |
-
$url->longUrl = $_GET['url'];
|
107 |
-
$short = $service->url->insert($url);
|
108 |
-
$_SESSION['access_token'] = $client->getAccessToken();
|
109 |
-
}
|
110 |
-
?>
|
111 |
-
|
112 |
-
<div class="box">
|
113 |
-
<?php if (isset($authUrl)): ?>
|
114 |
-
<div class="request">
|
115 |
-
<a class='login' href='<?= $authUrl ?>'>Connect Me!</a>
|
116 |
-
</div>
|
117 |
-
<?php elseif (empty($short)): ?>
|
118 |
-
<form id="url" method="GET" action="<?= $_SERVER['PHP_SELF'] ?>">
|
119 |
-
<input name="url" class="url" type="text">
|
120 |
-
<input type="submit" value="Shorten">
|
121 |
-
</form>
|
122 |
-
<a class='logout' href='?logout'>Logout</a>
|
123 |
-
<?php else: ?>
|
124 |
-
You created a short link! <br />
|
125 |
-
<a href="<?= $short['id'] ?>"><?= $short['id'] ?></a>
|
126 |
-
<div class="shortened">
|
127 |
-
<pre><?php var_export($short) ?></pre>
|
128 |
-
</div>
|
129 |
-
<a href="<?= $_SERVER['PHP_SELF'] ?>">Create another</a>
|
130 |
-
<?php endif ?>
|
131 |
-
</div>
|
132 |
-
|
133 |
-
<?= pageFooter(__FILE__);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/google/apiclient/phpunit.xml.dist
DELETED
@@ -1,19 +0,0 @@
|
|
1 |
-
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
-
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
3 |
-
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/3.7/phpunit.xsd"
|
4 |
-
colors="true"
|
5 |
-
bootstrap="tests/bootstrap.php">
|
6 |
-
<testsuites>
|
7 |
-
<testsuite name="Google PHP Client Unit Test Suite">
|
8 |
-
<directory>tests/Google</directory>
|
9 |
-
</testsuite>
|
10 |
-
<testsuite name="Google PHP Client Examples Test Suite">
|
11 |
-
<directory>tests/examples</directory>
|
12 |
-
</testsuite>
|
13 |
-
</testsuites>
|
14 |
-
<filter>
|
15 |
-
<whitelist>
|
16 |
-
<directory suffix=".php">./src/Google</directory>
|
17 |
-
</whitelist>
|
18 |
-
</filter>
|
19 |
-
</phpunit>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/google/apiclient/src/Google/AccessToken/Revoke.php
CHANGED
@@ -45,18 +45,20 @@ class Google_AccessToken_Revoke
|
|
45 |
* Revoke an OAuth2 access token or refresh token. This method will revoke the current access
|
46 |
* token, if a token isn't provided.
|
47 |
*
|
48 |
-
* @param string|
|
49 |
* @return boolean Returns True if the revocation was successful, otherwise False.
|
50 |
*/
|
51 |
-
public function revokeToken(
|
52 |
{
|
53 |
-
if (
|
54 |
-
|
55 |
-
|
56 |
-
|
|
|
|
|
57 |
}
|
58 |
|
59 |
-
$body = Psr7\stream_for(http_build_query(array('token' => $
|
60 |
$request = new Request(
|
61 |
'POST',
|
62 |
Google_Client::OAUTH2_REVOKE_URI,
|
@@ -70,10 +72,7 @@ class Google_AccessToken_Revoke
|
|
70 |
$httpHandler = HttpHandlerFactory::build($this->http);
|
71 |
|
72 |
$response = $httpHandler($request);
|
73 |
-
if ($response->getStatusCode() == 200) {
|
74 |
-
return true;
|
75 |
-
}
|
76 |
|
77 |
-
return
|
78 |
}
|
79 |
}
|
45 |
* Revoke an OAuth2 access token or refresh token. This method will revoke the current access
|
46 |
* token, if a token isn't provided.
|
47 |
*
|
48 |
+
* @param string|array $token The token (access token or a refresh token) that should be revoked.
|
49 |
* @return boolean Returns True if the revocation was successful, otherwise False.
|
50 |
*/
|
51 |
+
public function revokeToken($token)
|
52 |
{
|
53 |
+
if (is_array($token)) {
|
54 |
+
if (isset($token['refresh_token'])) {
|
55 |
+
$token = $token['refresh_token'];
|
56 |
+
} else {
|
57 |
+
$token = $token['access_token'];
|
58 |
+
}
|
59 |
}
|
60 |
|
61 |
+
$body = Psr7\stream_for(http_build_query(array('token' => $token)));
|
62 |
$request = new Request(
|
63 |
'POST',
|
64 |
Google_Client::OAUTH2_REVOKE_URI,
|
72 |
$httpHandler = HttpHandlerFactory::build($this->http);
|
73 |
|
74 |
$response = $httpHandler($request);
|
|
|
|
|
|
|
75 |
|
76 |
+
return $response->getStatusCode() == 200;
|
77 |
}
|
78 |
}
|
vendor/google/apiclient/src/Google/AccessToken/Verify.php
CHANGED
@@ -17,11 +17,11 @@
|
|
17 |
*/
|
18 |
|
19 |
use Firebase\JWT\ExpiredException as ExpiredExceptionV3;
|
|
|
20 |
use GuzzleHttp\Client;
|
21 |
use GuzzleHttp\ClientInterface;
|
22 |
-
use phpseclib\Crypt\RSA;
|
23 |
-
use phpseclib\Math\BigInteger;
|
24 |
use Psr\Cache\CacheItemPoolInterface;
|
|
|
25 |
use Stash\Driver\FileSystem;
|
26 |
use Stash\Pool;
|
27 |
|
@@ -49,19 +49,22 @@ class Google_AccessToken_Verify
|
|
49 |
* Instantiates the class, but does not initiate the login flow, leaving it
|
50 |
* to the discretion of the caller.
|
51 |
*/
|
52 |
-
public function __construct(
|
53 |
-
|
54 |
-
|
|
|
|
|
|
|
55 |
$http = new Client();
|
56 |
}
|
57 |
|
58 |
-
if (
|
59 |
-
$cache = new
|
60 |
}
|
61 |
|
62 |
$this->http = $http;
|
63 |
$this->cache = $cache;
|
64 |
-
$this->jwt = $this->getJwtService();
|
65 |
}
|
66 |
|
67 |
/**
|
@@ -70,7 +73,8 @@ class Google_AccessToken_Verify
|
|
70 |
* The audience parameter can be used to control which id tokens are
|
71 |
* accepted. By default, the id token must have been issued to this OAuth2 client.
|
72 |
*
|
73 |
-
* @param $
|
|
|
74 |
* @return array the token payload, if successful
|
75 |
*/
|
76 |
public function verifyIdToken($idToken, $audience = null)
|
@@ -85,10 +89,12 @@ class Google_AccessToken_Verify
|
|
85 |
// Check signature
|
86 |
$certs = $this->getFederatedSignOnCerts();
|
87 |
foreach ($certs as $cert) {
|
88 |
-
$
|
89 |
-
$
|
|
|
|
|
90 |
|
91 |
-
$rsa = new
|
92 |
$rsa->loadKey(array('n' => $modulus, 'e' => $exponent));
|
93 |
|
94 |
try {
|
@@ -116,6 +122,8 @@ class Google_AccessToken_Verify
|
|
116 |
return false;
|
117 |
} catch (ExpiredExceptionV3 $e) {
|
118 |
return false;
|
|
|
|
|
119 |
} catch (DomainException $e) {
|
120 |
// continue
|
121 |
}
|
@@ -171,7 +179,7 @@ class Google_AccessToken_Verify
|
|
171 |
{
|
172 |
$certs = null;
|
173 |
if ($cache = $this->getCache()) {
|
174 |
-
$cacheItem = $cache->getItem('federated_signon_certs_v3'
|
175 |
$certs = $cacheItem->get();
|
176 |
}
|
177 |
|
@@ -182,6 +190,7 @@ class Google_AccessToken_Verify
|
|
182 |
);
|
183 |
|
184 |
if ($cache) {
|
|
|
185 |
$cacheItem->set($certs);
|
186 |
$cache->save($cacheItem);
|
187 |
}
|
@@ -203,8 +212,8 @@ class Google_AccessToken_Verify
|
|
203 |
$jwtClass = 'Firebase\JWT\JWT';
|
204 |
}
|
205 |
|
206 |
-
if (property_exists($jwtClass, 'leeway')) {
|
207 |
-
//
|
208 |
// @see https://github.com/google/google-api-php-client/issues/827
|
209 |
$jwtClass::$leeway = 1;
|
210 |
}
|
@@ -212,6 +221,37 @@ class Google_AccessToken_Verify
|
|
212 |
return new $jwtClass;
|
213 |
}
|
214 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
215 |
/**
|
216 |
* phpseclib calls "phpinfo" by default, which requires special
|
217 |
* whitelisting in the AppEngine VM environment. This function
|
@@ -227,7 +267,7 @@ class Google_AccessToken_Verify
|
|
227 |
define('MATH_BIGINTEGER_OPENSSL_ENABLED', true);
|
228 |
}
|
229 |
if (!defined('CRYPT_RSA_MODE')) {
|
230 |
-
define('CRYPT_RSA_MODE',
|
231 |
}
|
232 |
}
|
233 |
}
|
17 |
*/
|
18 |
|
19 |
use Firebase\JWT\ExpiredException as ExpiredExceptionV3;
|
20 |
+
use Firebase\JWT\SignatureInvalidException;
|
21 |
use GuzzleHttp\Client;
|
22 |
use GuzzleHttp\ClientInterface;
|
|
|
|
|
23 |
use Psr\Cache\CacheItemPoolInterface;
|
24 |
+
use Google\Auth\Cache\MemoryCacheItemPool;
|
25 |
use Stash\Driver\FileSystem;
|
26 |
use Stash\Pool;
|
27 |
|
49 |
* Instantiates the class, but does not initiate the login flow, leaving it
|
50 |
* to the discretion of the caller.
|
51 |
*/
|
52 |
+
public function __construct(
|
53 |
+
ClientInterface $http = null,
|
54 |
+
CacheItemPoolInterface $cache = null,
|
55 |
+
$jwt = null
|
56 |
+
) {
|
57 |
+
if (null === $http) {
|
58 |
$http = new Client();
|
59 |
}
|
60 |
|
61 |
+
if (null === $cache) {
|
62 |
+
$cache = new MemoryCacheItemPool;
|
63 |
}
|
64 |
|
65 |
$this->http = $http;
|
66 |
$this->cache = $cache;
|
67 |
+
$this->jwt = $jwt ?: $this->getJwtService();
|
68 |
}
|
69 |
|
70 |
/**
|
73 |
* The audience parameter can be used to control which id tokens are
|
74 |
* accepted. By default, the id token must have been issued to this OAuth2 client.
|
75 |
*
|
76 |
+
* @param string $idToken the ID token in JWT format
|
77 |
+
* @param string $audience Optional. The audience to verify against JWt "aud"
|
78 |
* @return array the token payload, if successful
|
79 |
*/
|
80 |
public function verifyIdToken($idToken, $audience = null)
|
89 |
// Check signature
|
90 |
$certs = $this->getFederatedSignOnCerts();
|
91 |
foreach ($certs as $cert) {
|
92 |
+
$bigIntClass = $this->getBigIntClass();
|
93 |
+
$rsaClass = $this->getRsaClass();
|
94 |
+
$modulus = new $bigIntClass($this->jwt->urlsafeB64Decode($cert['n']), 256);
|
95 |
+
$exponent = new $bigIntClass($this->jwt->urlsafeB64Decode($cert['e']), 256);
|
96 |
|
97 |
+
$rsa = new $rsaClass();
|
98 |
$rsa->loadKey(array('n' => $modulus, 'e' => $exponent));
|
99 |
|
100 |
try {
|
122 |
return false;
|
123 |
} catch (ExpiredExceptionV3 $e) {
|
124 |
return false;
|
125 |
+
} catch (SignatureInvalidException $e) {
|
126 |
+
// continue
|
127 |
} catch (DomainException $e) {
|
128 |
// continue
|
129 |
}
|
179 |
{
|
180 |
$certs = null;
|
181 |
if ($cache = $this->getCache()) {
|
182 |
+
$cacheItem = $cache->getItem('federated_signon_certs_v3');
|
183 |
$certs = $cacheItem->get();
|
184 |
}
|
185 |
|
190 |
);
|
191 |
|
192 |
if ($cache) {
|
193 |
+
$cacheItem->expiresAt(new DateTime('+1 hour'));
|
194 |
$cacheItem->set($certs);
|
195 |
$cache->save($cacheItem);
|
196 |
}
|
212 |
$jwtClass = 'Firebase\JWT\JWT';
|
213 |
}
|
214 |
|
215 |
+
if (property_exists($jwtClass, 'leeway') && $jwtClass::$leeway < 1) {
|
216 |
+
// Ensures JWT leeway is at least 1
|
217 |
// @see https://github.com/google/google-api-php-client/issues/827
|
218 |
$jwtClass::$leeway = 1;
|
219 |
}
|
221 |
return new $jwtClass;
|
222 |
}
|
223 |
|
224 |
+
private function getRsaClass()
|
225 |
+
{
|
226 |
+
if (class_exists('phpseclib\Crypt\RSA')) {
|
227 |
+
return 'phpseclib\Crypt\RSA';
|
228 |
+
}
|
229 |
+
|
230 |
+
return 'Crypt_RSA';
|
231 |
+
}
|
232 |
+
|
233 |
+
private function getBigIntClass()
|
234 |
+
{
|
235 |
+
if (class_exists('phpseclib\Math\BigInteger')) {
|
236 |
+
return 'phpseclib\Math\BigInteger';
|
237 |
+
}
|
238 |
+
|
239 |
+
return 'Math_BigInteger';
|
240 |
+
}
|
241 |
+
|
242 |
+
private function getOpenSslConstant()
|
243 |
+
{
|
244 |
+
if (class_exists('phpseclib\Crypt\RSA')) {
|
245 |
+
return 'phpseclib\Crypt\RSA::MODE_OPENSSL';
|
246 |
+
}
|
247 |
+
|
248 |
+
if (class_exists('Crypt_RSA')) {
|
249 |
+
return 'CRYPT_RSA_MODE_OPENSSL';
|
250 |
+
}
|
251 |
+
|
252 |
+
throw new \Exception('Cannot find RSA class');
|
253 |
+
}
|
254 |
+
|
255 |
/**
|
256 |
* phpseclib calls "phpinfo" by default, which requires special
|
257 |
* whitelisting in the AppEngine VM environment. This function
|
267 |
define('MATH_BIGINTEGER_OPENSSL_ENABLED', true);
|
268 |
}
|
269 |
if (!defined('CRYPT_RSA_MODE')) {
|
270 |
+
define('CRYPT_RSA_MODE', constant($this->getOpenSslConstant()));
|
271 |
}
|
272 |
}
|
273 |
}
|
vendor/google/apiclient/src/Google/AuthHandler/AuthHandlerFactory.php
CHANGED
@@ -28,13 +28,20 @@ class Google_AuthHandler_AuthHandlerFactory
|
|
28 |
*/
|
29 |
public static function build($cache = null, array $cacheConfig = [])
|
30 |
{
|
31 |
-
$
|
|
|
|
|
|
|
|
|
|
|
32 |
|
33 |
-
switch ($
|
34 |
-
case
|
35 |
return new Google_AuthHandler_Guzzle5AuthHandler($cache, $cacheConfig);
|
36 |
-
case
|
37 |
return new Google_AuthHandler_Guzzle6AuthHandler($cache, $cacheConfig);
|
|
|
|
|
38 |
default:
|
39 |
throw new Exception('Version not supported');
|
40 |
}
|
28 |
*/
|
29 |
public static function build($cache = null, array $cacheConfig = [])
|
30 |
{
|
31 |
+
$guzzleVersion = null;
|
32 |
+
if (defined('\GuzzleHttp\ClientInterface::MAJOR_VERSION')) {
|
33 |
+
$guzzleVersion = ClientInterface::MAJOR_VERSION;
|
34 |
+
} elseif (defined('\GuzzleHttp\ClientInterface::VERSION')) {
|
35 |
+
$guzzleVersion = (int) substr(ClientInterface::VERSION, 0, 1);
|
36 |
+
}
|
37 |
|
38 |
+
switch ($guzzleVersion) {
|
39 |
+
case 5:
|
40 |
return new Google_AuthHandler_Guzzle5AuthHandler($cache, $cacheConfig);
|
41 |
+
case 6:
|
42 |
return new Google_AuthHandler_Guzzle6AuthHandler($cache, $cacheConfig);
|
43 |
+
case 7:
|
44 |
+
return new Google_AuthHandler_Guzzle7AuthHandler($cache, $cacheConfig);
|
45 |
default:
|
46 |
throw new Exception('Version not supported');
|
47 |
}
|
vendor/google/apiclient/src/Google/AuthHandler/Guzzle5AuthHandler.php
CHANGED
@@ -2,6 +2,7 @@
|
|
2 |
|
3 |
use Google\Auth\CredentialsLoader;
|
4 |
use Google\Auth\HttpHandler\HttpHandlerFactory;
|
|
|
5 |
use Google\Auth\Subscriber\AuthTokenSubscriber;
|
6 |
use Google\Auth\Subscriber\ScopedAccessTokenSubscriber;
|
7 |
use Google\Auth\Subscriber\SimpleSubscriber;
|
@@ -28,6 +29,14 @@ class Google_AuthHandler_Guzzle5AuthHandler
|
|
28 |
CredentialsLoader $credentials,
|
29 |
callable $tokenCallback = null
|
30 |
) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
// if we end up needing to make an HTTP request to retrieve credentials, we
|
32 |
// can use our existing one, but we need to throw exceptions so the error
|
33 |
// bubbles up.
|
@@ -35,8 +44,6 @@ class Google_AuthHandler_Guzzle5AuthHandler
|
|
35 |
$authHttpHandler = HttpHandlerFactory::build($authHttp);
|
36 |
$subscriber = new AuthTokenSubscriber(
|
37 |
$credentials,
|
38 |
-
$this->cacheConfig,
|
39 |
-
$this->cache,
|
40 |
$authHttpHandler,
|
41 |
$tokenCallback
|
42 |
);
|
@@ -56,7 +63,7 @@ class Google_AuthHandler_Guzzle5AuthHandler
|
|
56 |
$subscriber = new ScopedAccessTokenSubscriber(
|
57 |
$tokenFunc,
|
58 |
$scopes,
|
59 |
-
|
60 |
$this->cache
|
61 |
);
|
62 |
|
2 |
|
3 |
use Google\Auth\CredentialsLoader;
|
4 |
use Google\Auth\HttpHandler\HttpHandlerFactory;
|
5 |
+
use Google\Auth\FetchAuthTokenCache;
|
6 |
use Google\Auth\Subscriber\AuthTokenSubscriber;
|
7 |
use Google\Auth\Subscriber\ScopedAccessTokenSubscriber;
|
8 |
use Google\Auth\Subscriber\SimpleSubscriber;
|
29 |
CredentialsLoader $credentials,
|
30 |
callable $tokenCallback = null
|
31 |
) {
|
32 |
+
// use the provided cache
|
33 |
+
if ($this->cache) {
|
34 |
+
$credentials = new FetchAuthTokenCache(
|
35 |
+
$credentials,
|
36 |
+
$this->cacheConfig,
|
37 |
+
$this->cache
|
38 |
+
);
|
39 |
+
}
|
40 |
// if we end up needing to make an HTTP request to retrieve credentials, we
|
41 |
// can use our existing one, but we need to throw exceptions so the error
|
42 |
// bubbles up.
|
44 |
$authHttpHandler = HttpHandlerFactory::build($authHttp);
|
45 |
$subscriber = new AuthTokenSubscriber(
|
46 |
$credentials,
|
|
|
|
|
47 |
$authHttpHandler,
|
48 |
$tokenCallback
|
49 |
);
|
63 |
$subscriber = new ScopedAccessTokenSubscriber(
|
64 |
$tokenFunc,
|
65 |
$scopes,
|
66 |
+
$this->cacheConfig,
|
67 |
$this->cache
|
68 |
);
|
69 |
|
vendor/google/apiclient/src/Google/AuthHandler/Guzzle6AuthHandler.php
CHANGED
@@ -2,6 +2,7 @@
|
|
2 |
|
3 |
use Google\Auth\CredentialsLoader;
|
4 |
use Google\Auth\HttpHandler\HttpHandlerFactory;
|
|
|
5 |
use Google\Auth\Middleware\AuthTokenMiddleware;
|
6 |
use Google\Auth\Middleware\ScopedAccessTokenMiddleware;
|
7 |
use Google\Auth\Middleware\SimpleMiddleware;
|
@@ -10,7 +11,7 @@ use GuzzleHttp\ClientInterface;
|
|
10 |
use Psr\Cache\CacheItemPoolInterface;
|
11 |
|
12 |
/**
|
13 |
-
*
|
14 |
*/
|
15 |
class Google_AuthHandler_Guzzle6AuthHandler
|
16 |
{
|
@@ -28,6 +29,14 @@ class Google_AuthHandler_Guzzle6AuthHandler
|
|
28 |
CredentialsLoader $credentials,
|
29 |
callable $tokenCallback = null
|
30 |
) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
// if we end up needing to make an HTTP request to retrieve credentials, we
|
32 |
// can use our existing one, but we need to throw exceptions so the error
|
33 |
// bubbles up.
|
@@ -35,8 +44,6 @@ class Google_AuthHandler_Guzzle6AuthHandler
|
|
35 |
$authHttpHandler = HttpHandlerFactory::build($authHttp);
|
36 |
$middleware = new AuthTokenMiddleware(
|
37 |
$credentials,
|
38 |
-
$this->cacheConfig,
|
39 |
-
$this->cache,
|
40 |
$authHttpHandler,
|
41 |
$tokenCallback
|
42 |
);
|
@@ -59,7 +66,7 @@ class Google_AuthHandler_Guzzle6AuthHandler
|
|
59 |
$middleware = new ScopedAccessTokenMiddleware(
|
60 |
$tokenFunc,
|
61 |
$scopes,
|
62 |
-
|
63 |
$this->cache
|
64 |
);
|
65 |
|
2 |
|
3 |
use Google\Auth\CredentialsLoader;
|
4 |
use Google\Auth\HttpHandler\HttpHandlerFactory;
|
5 |
+
use Google\Auth\FetchAuthTokenCache;
|
6 |
use Google\Auth\Middleware\AuthTokenMiddleware;
|
7 |
use Google\Auth\Middleware\ScopedAccessTokenMiddleware;
|
8 |
use Google\Auth\Middleware\SimpleMiddleware;
|
11 |
use Psr\Cache\CacheItemPoolInterface;
|
12 |
|
13 |
/**
|
14 |
+
* This supports Guzzle 6
|
15 |
*/
|
16 |
class Google_AuthHandler_Guzzle6AuthHandler
|
17 |
{
|
29 |
CredentialsLoader $credentials,
|
30 |
callable $tokenCallback = null
|
31 |
) {
|
32 |
+
// use the provided cache
|
33 |
+
if ($this->cache) {
|
34 |
+
$credentials = new FetchAuthTokenCache(
|
35 |
+
$credentials,
|
36 |
+
$this->cacheConfig,
|
37 |
+
$this->cache
|
38 |
+
);
|
39 |
+
}
|
40 |
// if we end up needing to make an HTTP request to retrieve credentials, we
|
41 |
// can use our existing one, but we need to throw exceptions so the error
|
42 |
// bubbles up.
|
44 |
$authHttpHandler = HttpHandlerFactory::build($authHttp);
|
45 |
$middleware = new AuthTokenMiddleware(
|
46 |
$credentials,
|
|
|
|
|
47 |
$authHttpHandler,
|
48 |
$tokenCallback
|
49 |
);
|
66 |
$middleware = new ScopedAccessTokenMiddleware(
|
67 |
$tokenFunc,
|
68 |
$scopes,
|
69 |
+
$this->cacheConfig,
|
70 |
$this->cache
|
71 |
);
|
72 |
|
vendor/google/apiclient/src/Google/AuthHandler/Guzzle7AuthHandler.php
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright 2020 Google LLC
|
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 |
+
/**
|
19 |
+
* This supports Guzzle 7
|
20 |
+
*/
|
21 |
+
class Google_AuthHandler_Guzzle7AuthHandler extends Google_AuthHandler_Guzzle6AuthHandler
|
22 |
+
{
|
23 |
+
}
|
vendor/google/apiclient/src/Google/Client.php
CHANGED
@@ -16,6 +16,7 @@
|
|
16 |
*/
|
17 |
|
18 |
use Google\Auth\ApplicationDefaultCredentials;
|
|
|
19 |
use Google\Auth\CredentialsLoader;
|
20 |
use Google\Auth\HttpHandler\HttpHandlerFactory;
|
21 |
use Google\Auth\OAuth2;
|
@@ -24,12 +25,12 @@ use Google\Auth\Credentials\UserRefreshCredentials;
|
|
24 |
use GuzzleHttp\Client;
|
25 |
use GuzzleHttp\ClientInterface;
|
26 |
use GuzzleHttp\Ring\Client\StreamHandler;
|
27 |
-
use GuzzleHttp\Psr7;
|
28 |
use Psr\Cache\CacheItemPoolInterface;
|
29 |
use Psr\Http\Message\RequestInterface;
|
30 |
use Psr\Log\LoggerInterface;
|
31 |
use Monolog\Logger;
|
32 |
use Monolog\Handler\StreamHandler as MonologStreamHandler;
|
|
|
33 |
|
34 |
/**
|
35 |
* The Google API Client
|
@@ -37,10 +38,10 @@ use Monolog\Handler\StreamHandler as MonologStreamHandler;
|
|
37 |
*/
|
38 |
class Google_Client
|
39 |
{
|
40 |
-
const LIBVER = "2.
|
41 |
const USER_AGENT_SUFFIX = "google-api-php-client/";
|
42 |
-
const OAUTH2_REVOKE_URI = 'https://
|
43 |
-
const OAUTH2_TOKEN_URI = 'https://
|
44 |
const OAUTH2_AUTH_URL = 'https://accounts.google.com/o/oauth2/auth';
|
45 |
const API_BASE_PATH = 'https://www.googleapis.com';
|
46 |
|
@@ -65,12 +66,12 @@ class Google_Client
|
|
65 |
private $token;
|
66 |
|
67 |
/**
|
68 |
-
* @var
|
69 |
*/
|
70 |
private $config;
|
71 |
|
72 |
/**
|
73 |
-
* @var
|
74 |
*/
|
75 |
private $logger;
|
76 |
|
@@ -86,9 +87,9 @@ class Google_Client
|
|
86 |
/**
|
87 |
* Construct the Google Client.
|
88 |
*
|
89 |
-
* @param $config
|
90 |
*/
|
91 |
-
public function __construct($config = array())
|
92 |
{
|
93 |
$this->config = array_merge(
|
94 |
[
|
@@ -101,6 +102,16 @@ class Google_Client
|
|
101 |
// https://developers.google.com/console
|
102 |
'client_id' => '',
|
103 |
'client_secret' => '',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
104 |
'redirect_uri' => null,
|
105 |
'state' => null,
|
106 |
|
@@ -129,6 +140,7 @@ class Google_Client
|
|
129 |
// Task Runner retry configuration
|
130 |
// @see Google_Task_Runner
|
131 |
'retry' => array(),
|
|
|
132 |
|
133 |
// cache config for downstream auth caching
|
134 |
'cache_config' => [],
|
@@ -136,9 +148,39 @@ class Google_Client
|
|
136 |
// function to be called when an access token is fetched
|
137 |
// follows the signature function ($cacheKey, $accessToken)
|
138 |
'token_callback' => null,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
139 |
],
|
140 |
$config
|
141 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
142 |
}
|
143 |
|
144 |
/**
|
@@ -157,6 +199,7 @@ class Google_Client
|
|
157 |
*
|
158 |
* @param $code string code from accounts.google.com
|
159 |
* @return array access token
|
|
|
160 |
*/
|
161 |
public function authenticate($code)
|
162 |
{
|
@@ -195,6 +238,7 @@ class Google_Client
|
|
195 |
* alias for fetchAccessTokenWithAssertion
|
196 |
*
|
197 |
* @return array access token
|
|
|
198 |
*/
|
199 |
public function refreshTokenWithAssertion()
|
200 |
{
|
@@ -203,7 +247,7 @@ class Google_Client
|
|
203 |
|
204 |
/**
|
205 |
* Fetches a fresh access token with a given assertion token.
|
206 |
-
* @param $
|
207 |
* @return array access token
|
208 |
*/
|
209 |
public function fetchAccessTokenWithAssertion(ClientInterface $authHttp = null)
|
@@ -226,12 +270,13 @@ class Google_Client
|
|
226 |
$credentials = $this->createApplicationDefaultCredentials();
|
227 |
|
228 |
$httpHandler = HttpHandlerFactory::build($authHttp);
|
229 |
-
$
|
230 |
-
if ($
|
231 |
-
$
|
|
|
232 |
}
|
233 |
|
234 |
-
return $
|
235 |
}
|
236 |
|
237 |
/**
|
@@ -253,7 +298,7 @@ class Google_Client
|
|
253 |
*/
|
254 |
public function fetchAccessTokenWithRefreshToken($refreshToken = null)
|
255 |
{
|
256 |
-
if (
|
257 |
if (!isset($this->token['refresh_token'])) {
|
258 |
throw new LogicException(
|
259 |
'refresh token must be passed in or set as part of setAccessToken'
|
@@ -269,6 +314,9 @@ class Google_Client
|
|
269 |
$creds = $auth->fetchAuthToken($httpHandler);
|
270 |
if ($creds && isset($creds['access_token'])) {
|
271 |
$creds['created'] = time();
|
|
|
|
|
|
|
272 |
$this->setAccessToken($creds);
|
273 |
}
|
274 |
|
@@ -333,15 +381,14 @@ class Google_Client
|
|
333 |
* set in the Google API Client object
|
334 |
*
|
335 |
* @param GuzzleHttp\ClientInterface $http the http client object.
|
336 |
-
* @param GuzzleHttp\ClientInterface $authHttp an http client for authentication.
|
337 |
* @return GuzzleHttp\ClientInterface the http client object
|
338 |
*/
|
339 |
-
public function authorize(ClientInterface $http = null
|
340 |
{
|
341 |
$credentials = null;
|
342 |
$token = null;
|
343 |
$scopes = null;
|
344 |
-
if (
|
345 |
$http = $this->getHttpClient();
|
346 |
}
|
347 |
|
@@ -355,7 +402,7 @@ class Google_Client
|
|
355 |
} elseif ($token = $this->getAccessToken()) {
|
356 |
$scopes = $this->prepareScopes();
|
357 |
// add refresh subscriber to request a new token
|
358 |
-
if (
|
359 |
$credentials = $this->createUserRefreshCredentials(
|
360 |
$scopes,
|
361 |
$token['refresh_token']
|
@@ -401,6 +448,17 @@ class Google_Client
|
|
401 |
}
|
402 |
|
403 |
/**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
404 |
* @param string|array $token
|
405 |
* @throws InvalidArgumentException
|
406 |
*/
|
@@ -430,11 +488,16 @@ class Google_Client
|
|
430 |
return $this->token;
|
431 |
}
|
432 |
|
|
|
|
|
|
|
433 |
public function getRefreshToken()
|
434 |
{
|
435 |
if (isset($this->token['refresh_token'])) {
|
436 |
return $this->token['refresh_token'];
|
437 |
}
|
|
|
|
|
438 |
}
|
439 |
|
440 |
/**
|
@@ -466,12 +529,12 @@ class Google_Client
|
|
466 |
}
|
467 |
|
468 |
// If the token is set to expire in the next 30 seconds.
|
469 |
-
$
|
470 |
-
+ ($this->token['expires_in'] - 30)) < time();
|
471 |
-
|
472 |
-
return $expired;
|
473 |
}
|
474 |
|
|
|
|
|
|
|
475 |
public function getAuth()
|
476 |
{
|
477 |
throw new BadMethodCallException(
|
@@ -479,6 +542,9 @@ class Google_Client
|
|
479 |
);
|
480 |
}
|
481 |
|
|
|
|
|
|
|
482 |
public function setAuth($auth)
|
483 |
{
|
484 |
throw new BadMethodCallException(
|
@@ -550,8 +616,8 @@ class Google_Client
|
|
550 |
|
551 |
/**
|
552 |
* @param string $approvalPrompt Possible values for approval_prompt include:
|
553 |
-
* {@code "force"} to force the approval UI to appear.
|
554 |
-
* {@code "auto"} to request auto-approval when possible.
|
555 |
*/
|
556 |
public function setApprovalPrompt($approvalPrompt)
|
557 |
{
|
@@ -587,7 +653,7 @@ class Google_Client
|
|
587 |
public function setRequestVisibleActions($requestVisibleActions)
|
588 |
{
|
589 |
if (is_array($requestVisibleActions)) {
|
590 |
-
$requestVisibleActions =
|
591 |
}
|
592 |
$this->config['request_visible_actions'] = $requestVisibleActions;
|
593 |
}
|
@@ -618,6 +684,9 @@ class Google_Client
|
|
618 |
* If no value is specified and the user has not previously authorized
|
619 |
* access, then the user is shown a consent screen.
|
620 |
* @param $prompt string
|
|
|
|
|
|
|
621 |
*/
|
622 |
public function setPrompt($prompt)
|
623 |
{
|
@@ -659,7 +728,7 @@ class Google_Client
|
|
659 |
* Revoke an OAuth2 access token or refresh token. This method will revoke the current access
|
660 |
* token, if a token isn't provided.
|
661 |
*
|
662 |
-
* @param string|null $token The token (access token or a refresh token) that should be revoked.
|
663 |
* @return boolean Returns True if the revocation was successful, otherwise False.
|
664 |
*/
|
665 |
public function revokeToken($token = null)
|
@@ -675,7 +744,8 @@ class Google_Client
|
|
675 |
* Verify an id_token. This method will verify the current id_token, if one
|
676 |
* isn't provided.
|
677 |
*
|
678 |
-
* @throws
|
|
|
679 |
* @param string|null $idToken The token (id_token) that should be verified.
|
680 |
* @return array|false Returns the token payload as an array if the verification was
|
681 |
* successful, false otherwise.
|
@@ -684,10 +754,11 @@ class Google_Client
|
|
684 |
{
|
685 |
$tokenVerifier = new Google_AccessToken_Verify(
|
686 |
$this->getHttpClient(),
|
687 |
-
$this->getCache()
|
|
|
688 |
);
|
689 |
|
690 |
-
if (
|
691 |
$token = $this->getAccessToken();
|
692 |
if (!isset($token['id_token'])) {
|
693 |
throw new LogicException(
|
@@ -706,13 +777,16 @@ class Google_Client
|
|
706 |
/**
|
707 |
* Set the scopes to be requested. Must be called before createAuthUrl().
|
708 |
* Will remove any previously configured scopes.
|
709 |
-
* @param array $
|
710 |
-
*
|
|
|
|
|
|
|
711 |
*/
|
712 |
-
public function setScopes($
|
713 |
{
|
714 |
$this->requestedScopes = array();
|
715 |
-
$this->addScope($
|
716 |
}
|
717 |
|
718 |
/**
|
@@ -744,7 +818,7 @@ class Google_Client
|
|
744 |
}
|
745 |
|
746 |
/**
|
747 |
-
* @return
|
748 |
* @visible For Testing
|
749 |
*/
|
750 |
public function prepareScopes()
|
@@ -752,31 +826,57 @@ class Google_Client
|
|
752 |
if (empty($this->requestedScopes)) {
|
753 |
return null;
|
754 |
}
|
755 |
-
|
756 |
-
return $
|
757 |
}
|
758 |
|
759 |
/**
|
760 |
* Helper method to execute deferred HTTP requests.
|
761 |
*
|
762 |
* @param $request Psr\Http\Message\RequestInterface|Google_Http_Batch
|
|
|
763 |
* @throws Google_Exception
|
764 |
* @return object of the type of the expected class or Psr\Http\Message\ResponseInterface.
|
765 |
*/
|
766 |
public function execute(RequestInterface $request, $expectedClass = null)
|
767 |
{
|
768 |
-
$request = $request
|
769 |
-
|
770 |
-
|
771 |
-
|
772 |
-
|
773 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
774 |
|
775 |
// call the authorize method
|
776 |
// this is where most of the grunt work is done
|
777 |
$http = $this->authorize();
|
778 |
|
779 |
-
return Google_Http_REST::execute(
|
|
|
|
|
|
|
|
|
|
|
|
|
780 |
}
|
781 |
|
782 |
/**
|
@@ -818,6 +918,7 @@ class Google_Client
|
|
818 |
*
|
819 |
* @param string $file the configuration file
|
820 |
* @throws Google_Exception
|
|
|
821 |
*/
|
822 |
public function setAuthConfigFile($file)
|
823 |
{
|
@@ -829,14 +930,14 @@ class Google_Client
|
|
829 |
* This structure should match the file downloaded from
|
830 |
* the "Download JSON" button on in the Google Developer
|
831 |
* Console.
|
832 |
-
* @param string|array $
|
833 |
* @throws Google_Exception
|
834 |
*/
|
835 |
public function setAuthConfig($config)
|
836 |
{
|
837 |
if (is_string($config)) {
|
838 |
if (!file_exists($config)) {
|
839 |
-
throw new InvalidArgumentException('file does not exist');
|
840 |
}
|
841 |
|
842 |
$json = file_get_contents($config);
|
@@ -876,7 +977,7 @@ class Google_Client
|
|
876 |
/**
|
877 |
* Use when the service account has been delegated domain wide access.
|
878 |
*
|
879 |
-
* @param string subject an email address account to impersonate
|
880 |
*/
|
881 |
public function setSubject($subject)
|
882 |
{
|
@@ -950,11 +1051,15 @@ class Google_Client
|
|
950 |
*/
|
951 |
public function getCache()
|
952 |
{
|
|
|
|
|
|
|
|
|
953 |
return $this->cache;
|
954 |
}
|
955 |
|
956 |
/**
|
957 |
-
* @
|
958 |
*/
|
959 |
public function setCacheConfig(array $cacheConfig)
|
960 |
{
|
@@ -985,11 +1090,21 @@ class Google_Client
|
|
985 |
protected function createDefaultLogger()
|
986 |
{
|
987 |
$logger = new Logger('google-api-php-client');
|
988 |
-
$
|
|
|
|
|
|
|
|
|
|
|
989 |
|
990 |
return $logger;
|
991 |
}
|
992 |
|
|
|
|
|
|
|
|
|
|
|
993 |
/**
|
994 |
* Set the Http Client object
|
995 |
* @param GuzzleHttp\ClientInterface $http
|
@@ -1004,31 +1119,50 @@ class Google_Client
|
|
1004 |
*/
|
1005 |
public function getHttpClient()
|
1006 |
{
|
1007 |
-
if (
|
1008 |
$this->http = $this->createDefaultHttpClient();
|
1009 |
}
|
1010 |
|
1011 |
return $this->http;
|
1012 |
}
|
1013 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1014 |
protected function createDefaultHttpClient()
|
1015 |
{
|
1016 |
-
$
|
|
|
|
|
|
|
|
|
|
|
1017 |
|
1018 |
-
$
|
1019 |
-
if (
|
1020 |
$options = [
|
1021 |
'base_url' => $this->config['base_path'],
|
1022 |
'defaults' => $options,
|
1023 |
];
|
1024 |
if ($this->isAppEngine()) {
|
1025 |
// set StreamHandler on AppEngine by default
|
1026 |
-
$options['handler']
|
1027 |
$options['defaults']['verify'] = '/etc/ca-certificates.crt';
|
1028 |
}
|
1029 |
-
}
|
1030 |
-
// guzzle 6
|
1031 |
$options['base_uri'] = $this->config['base_path'];
|
|
|
|
|
1032 |
}
|
1033 |
|
1034 |
return new Client($options);
|
@@ -1047,10 +1181,20 @@ class Google_Client
|
|
1047 |
'client_email' => $this->config['client_email'],
|
1048 |
'private_key' => $signingKey,
|
1049 |
'type' => 'service_account',
|
|
|
|
|
|
|
|
|
|
|
1050 |
);
|
1051 |
-
$credentials = CredentialsLoader::makeCredentials($scopes, $serviceAccountCredentials);
|
1052 |
} else {
|
1053 |
-
$credentials = ApplicationDefaultCredentials::getCredentials(
|
|
|
|
|
|
|
|
|
|
|
|
|
1054 |
}
|
1055 |
|
1056 |
// for service account domain-wide authority (impersonating a user)
|
16 |
*/
|
17 |
|
18 |
use Google\Auth\ApplicationDefaultCredentials;
|
19 |
+
use Google\Auth\Cache\MemoryCacheItemPool;
|
20 |
use Google\Auth\CredentialsLoader;
|
21 |
use Google\Auth\HttpHandler\HttpHandlerFactory;
|
22 |
use Google\Auth\OAuth2;
|
25 |
use GuzzleHttp\Client;
|
26 |
use GuzzleHttp\ClientInterface;
|
27 |
use GuzzleHttp\Ring\Client\StreamHandler;
|
|
|
28 |
use Psr\Cache\CacheItemPoolInterface;
|
29 |
use Psr\Http\Message\RequestInterface;
|
30 |
use Psr\Log\LoggerInterface;
|
31 |
use Monolog\Logger;
|
32 |
use Monolog\Handler\StreamHandler as MonologStreamHandler;
|
33 |
+
use Monolog\Handler\SyslogHandler as MonologSyslogHandler;
|
34 |
|
35 |
/**
|
36 |
* The Google API Client
|
38 |
*/
|
39 |
class Google_Client
|
40 |
{
|
41 |
+
const LIBVER = "2.7.1";
|
42 |
const USER_AGENT_SUFFIX = "google-api-php-client/";
|
43 |
+
const OAUTH2_REVOKE_URI = 'https://oauth2.googleapis.com/revoke';
|
44 |
+
const OAUTH2_TOKEN_URI = 'https://oauth2.googleapis.com/token';
|
45 |
const OAUTH2_AUTH_URL = 'https://accounts.google.com/o/oauth2/auth';
|
46 |
const API_BASE_PATH = 'https://www.googleapis.com';
|
47 |
|
66 |
private $token;
|
67 |
|
68 |
/**
|
69 |
+
* @var array $config
|
70 |
*/
|
71 |
private $config;
|
72 |
|
73 |
/**
|
74 |
+
* @var Psr\Log\LoggerInterface $logger
|
75 |
*/
|
76 |
private $logger;
|
77 |
|
87 |
/**
|
88 |
* Construct the Google Client.
|
89 |
*
|
90 |
+
* @param array $config
|
91 |
*/
|
92 |
+
public function __construct(array $config = array())
|
93 |
{
|
94 |
$this->config = array_merge(
|
95 |
[
|
102 |
// https://developers.google.com/console
|
103 |
'client_id' => '',
|
104 |
'client_secret' => '',
|
105 |
+
|
106 |
+
// Path to JSON credentials or an array representing those credentials
|
107 |
+
// @see Google_Client::setAuthConfig
|
108 |
+
'credentials' => null,
|
109 |
+
// @see Google_Client::setScopes
|
110 |
+
'scopes' => null,
|
111 |
+
// Sets X-Goog-User-Project, which specifies a user project to bill
|
112 |
+
// for access charges associated with the request
|
113 |
+
'quota_project' => null,
|
114 |
+
|
115 |
'redirect_uri' => null,
|
116 |
'state' => null,
|
117 |
|
140 |
// Task Runner retry configuration
|
141 |
// @see Google_Task_Runner
|
142 |
'retry' => array(),
|
143 |
+
'retry_map' => null,
|
144 |
|
145 |
// cache config for downstream auth caching
|
146 |
'cache_config' => [],
|
148 |
// function to be called when an access token is fetched
|
149 |
// follows the signature function ($cacheKey, $accessToken)
|
150 |
'token_callback' => null,
|
151 |
+
|
152 |
+
// Service class used in Google_Client::verifyIdToken.
|
153 |
+
// Explicitly pass this in to avoid setting JWT::$leeway
|
154 |
+
'jwt' => null,
|
155 |
+
|
156 |
+
// Setting api_format_v2 will return more detailed error messages
|
157 |
+
// from certain APIs.
|
158 |
+
'api_format_v2' => false
|
159 |
],
|
160 |
$config
|
161 |
);
|
162 |
+
|
163 |
+
if (!is_null($this->config['credentials'])) {
|
164 |
+
$this->setAuthConfig($this->config['credentials']);
|
165 |
+
unset($this->config['credentials']);
|
166 |
+
}
|
167 |
+
|
168 |
+
if (!is_null($this->config['scopes'])) {
|
169 |
+
$this->setScopes($this->config['scopes']);
|
170 |
+
unset($this->config['scopes']);
|
171 |
+
}
|
172 |
+
|
173 |
+
// Set a default token callback to update the in-memory access token
|
174 |
+
if (is_null($this->config['token_callback'])) {
|
175 |
+
$this->config['token_callback'] = function ($cacheKey, $newAccessToken) {
|
176 |
+
$this->setAccessToken(
|
177 |
+
[
|
178 |
+
'access_token' => $newAccessToken,
|
179 |
+
'created' => time(),
|
180 |
+
]
|
181 |
+
);
|
182 |
+
};
|
183 |
+
}
|
184 |
}
|
185 |
|
186 |
/**
|
199 |
*
|
200 |
* @param $code string code from accounts.google.com
|
201 |
* @return array access token
|
202 |
+
* @deprecated
|
203 |
*/
|
204 |
public function authenticate($code)
|
205 |
{
|
238 |
* alias for fetchAccessTokenWithAssertion
|
239 |
*
|
240 |
* @return array access token
|
241 |
+
* @deprecated
|
242 |
*/
|
243 |
public function refreshTokenWithAssertion()
|
244 |
{
|
247 |
|
248 |
/**
|
249 |
* Fetches a fresh access token with a given assertion token.
|
250 |
+
* @param ClientInterface $authHttp optional.
|
251 |
* @return array access token
|
252 |
*/
|
253 |
public function fetchAccessTokenWithAssertion(ClientInterface $authHttp = null)
|
270 |
$credentials = $this->createApplicationDefaultCredentials();
|
271 |
|
272 |
$httpHandler = HttpHandlerFactory::build($authHttp);
|
273 |
+
$creds = $credentials->fetchAuthToken($httpHandler);
|
274 |
+
if ($creds && isset($creds['access_token'])) {
|
275 |
+
$creds['created'] = time();
|
276 |
+
$this->setAccessToken($creds);
|
277 |
}
|
278 |
|
279 |
+
return $creds;
|
280 |
}
|
281 |
|
282 |
/**
|
298 |
*/
|
299 |
public function fetchAccessTokenWithRefreshToken($refreshToken = null)
|
300 |
{
|
301 |
+
if (null === $refreshToken) {
|
302 |
if (!isset($this->token['refresh_token'])) {
|
303 |
throw new LogicException(
|
304 |
'refresh token must be passed in or set as part of setAccessToken'
|
314 |
$creds = $auth->fetchAuthToken($httpHandler);
|
315 |
if ($creds && isset($creds['access_token'])) {
|
316 |
$creds['created'] = time();
|
317 |
+
if (!isset($creds['refresh_token'])) {
|
318 |
+
$creds['refresh_token'] = $refreshToken;
|
319 |
+
}
|
320 |
$this->setAccessToken($creds);
|
321 |
}
|
322 |
|
381 |
* set in the Google API Client object
|
382 |
*
|
383 |
* @param GuzzleHttp\ClientInterface $http the http client object.
|
|
|
384 |
* @return GuzzleHttp\ClientInterface the http client object
|
385 |
*/
|
386 |
+
public function authorize(ClientInterface $http = null)
|
387 |
{
|
388 |
$credentials = null;
|
389 |
$token = null;
|
390 |
$scopes = null;
|
391 |
+
if (null === $http) {
|
392 |
$http = $this->getHttpClient();
|
393 |
}
|
394 |
|
402 |
} elseif ($token = $this->getAccessToken()) {
|
403 |
$scopes = $this->prepareScopes();
|
404 |
// add refresh subscriber to request a new token
|
405 |
+
if (isset($token['refresh_token']) && $this->isAccessTokenExpired()) {
|
406 |
$credentials = $this->createUserRefreshCredentials(
|
407 |
$scopes,
|
408 |
$token['refresh_token']
|
448 |
}
|
449 |
|
450 |
/**
|
451 |
+
* Set the access token used for requests.
|
452 |
+
*
|
453 |
+
* Note that at the time requests are sent, tokens are cached. A token will be
|
454 |
+
* cached for each combination of service and authentication scopes. If a
|
455 |
+
* cache pool is not provided, creating a new instance of the client will
|
456 |
+
* allow modification of access tokens. If a persistent cache pool is
|
457 |
+
* provided, in order to change the access token, you must clear the cached
|
458 |
+
* token by calling `$client->getCache()->clear()`. (Use caution in this case,
|
459 |
+
* as calling `clear()` will remove all cache items, including any items not
|
460 |
+
* related to Google API PHP Client.)
|
461 |
+
*
|
462 |
* @param string|array $token
|
463 |
* @throws InvalidArgumentException
|
464 |
*/
|
488 |
return $this->token;
|
489 |
}
|
490 |
|
491 |
+
/**
|
492 |
+
* @return string|null
|
493 |
+
*/
|
494 |
public function getRefreshToken()
|
495 |
{
|
496 |
if (isset($this->token['refresh_token'])) {
|
497 |
return $this->token['refresh_token'];
|
498 |
}
|
499 |
+
|
500 |
+
return null;
|
501 |
}
|
502 |
|
503 |
/**
|
529 |
}
|
530 |
|
531 |
// If the token is set to expire in the next 30 seconds.
|
532 |
+
return ($created + ($this->token['expires_in'] - 30)) < time();
|
|
|
|
|
|
|
533 |
}
|
534 |
|
535 |
+
/**
|
536 |
+
* @deprecated See UPGRADING.md for more information
|
537 |
+
*/
|
538 |
public function getAuth()
|
539 |
{
|
540 |
throw new BadMethodCallException(
|
542 |
);
|
543 |
}
|
544 |
|
545 |
+
/**
|
546 |
+
* @deprecated See UPGRADING.md for more information
|
547 |
+
*/
|
548 |
public function setAuth($auth)
|
549 |
{
|
550 |
throw new BadMethodCallException(
|
616 |
|
617 |
/**
|
618 |
* @param string $approvalPrompt Possible values for approval_prompt include:
|
619 |
+
* {@code "force"} to force the approval UI to appear.
|
620 |
+
* {@code "auto"} to request auto-approval when possible. (This is the default value)
|
621 |
*/
|
622 |
public function setApprovalPrompt($approvalPrompt)
|
623 |
{
|
653 |
public function setRequestVisibleActions($requestVisibleActions)
|
654 |
{
|
655 |
if (is_array($requestVisibleActions)) {
|
656 |
+
$requestVisibleActions = implode(" ", $requestVisibleActions);
|
657 |
}
|
658 |
$this->config['request_visible_actions'] = $requestVisibleActions;
|
659 |
}
|
684 |
* If no value is specified and the user has not previously authorized
|
685 |
* access, then the user is shown a consent screen.
|
686 |
* @param $prompt string
|
687 |
+
* {@code "none"} Do not display any authentication or consent screens. Must not be specified with other values.
|
688 |
+
* {@code "consent"} Prompt the user for consent.
|
689 |
+
* {@code "select_account"} Prompt the user to select an account.
|
690 |
*/
|
691 |
public function setPrompt($prompt)
|
692 |
{
|
728 |
* Revoke an OAuth2 access token or refresh token. This method will revoke the current access
|
729 |
* token, if a token isn't provided.
|
730 |
*
|
731 |
+
* @param string|array|null $token The token (access token or a refresh token) that should be revoked.
|
732 |
* @return boolean Returns True if the revocation was successful, otherwise False.
|
733 |
*/
|
734 |
public function revokeToken($token = null)
|
744 |
* Verify an id_token. This method will verify the current id_token, if one
|
745 |
* isn't provided.
|
746 |
*
|
747 |
+
* @throws LogicException If no token was provided and no token was set using `setAccessToken`.
|
748 |
+
* @throws UnexpectedValueException If the token is not a valid JWT.
|
749 |
* @param string|null $idToken The token (id_token) that should be verified.
|
750 |
* @return array|false Returns the token payload as an array if the verification was
|
751 |
* successful, false otherwise.
|
754 |
{
|
755 |
$tokenVerifier = new Google_AccessToken_Verify(
|
756 |
$this->getHttpClient(),
|
757 |
+
$this->getCache(),
|
758 |
+
$this->config['jwt']
|
759 |
);
|
760 |
|
761 |
+
if (null === $idToken) {
|
762 |
$token = $this->getAccessToken();
|
763 |
if (!isset($token['id_token'])) {
|
764 |
throw new LogicException(
|
777 |
/**
|
778 |
* Set the scopes to be requested. Must be called before createAuthUrl().
|
779 |
* Will remove any previously configured scopes.
|
780 |
+
* @param string|array $scope_or_scopes, ie:
|
781 |
+
* array(
|
782 |
+
* 'https://www.googleapis.com/auth/plus.login',
|
783 |
+
* 'https://www.googleapis.com/auth/moderator'
|
784 |
+
* );
|
785 |
*/
|
786 |
+
public function setScopes($scope_or_scopes)
|
787 |
{
|
788 |
$this->requestedScopes = array();
|
789 |
+
$this->addScope($scope_or_scopes);
|
790 |
}
|
791 |
|
792 |
/**
|
818 |
}
|
819 |
|
820 |
/**
|
821 |
+
* @return string|null
|
822 |
* @visible For Testing
|
823 |
*/
|
824 |
public function prepareScopes()
|
826 |
if (empty($this->requestedScopes)) {
|
827 |
return null;
|
828 |
}
|
829 |
+
|
830 |
+
return implode(' ', $this->requestedScopes);
|
831 |
}
|
832 |
|
833 |
/**
|
834 |
* Helper method to execute deferred HTTP requests.
|
835 |
*
|
836 |
* @param $request Psr\Http\Message\RequestInterface|Google_Http_Batch
|
837 |
+
* @param string $expectedClass
|
838 |
* @throws Google_Exception
|
839 |
* @return object of the type of the expected class or Psr\Http\Message\ResponseInterface.
|
840 |
*/
|
841 |
public function execute(RequestInterface $request, $expectedClass = null)
|
842 |
{
|
843 |
+
$request = $request
|
844 |
+
->withHeader(
|
845 |
+
'User-Agent',
|
846 |
+
sprintf(
|
847 |
+
'%s %s%s',
|
848 |
+
$this->config['application_name'],
|
849 |
+
self::USER_AGENT_SUFFIX,
|
850 |
+
$this->getLibraryVersion()
|
851 |
+
)
|
852 |
+
)
|
853 |
+
->withHeader(
|
854 |
+
'x-goog-api-client',
|
855 |
+
sprintf(
|
856 |
+
'gl-php/%s gdcl/%s',
|
857 |
+
phpversion(),
|
858 |
+
$this->getLibraryVersion()
|
859 |
+
)
|
860 |
+
);
|
861 |
+
|
862 |
+
if ($this->config['api_format_v2']) {
|
863 |
+
$request = $request->withHeader(
|
864 |
+
'X-GOOG-API-FORMAT-VERSION',
|
865 |
+
2
|
866 |
+
);
|
867 |
+
}
|
868 |
|
869 |
// call the authorize method
|
870 |
// this is where most of the grunt work is done
|
871 |
$http = $this->authorize();
|
872 |
|
873 |
+
return Google_Http_REST::execute(
|
874 |
+
$http,
|
875 |
+
$request,
|
876 |
+
$expectedClass,
|
877 |
+
$this->config['retry'],
|
878 |
+
$this->config['retry_map']
|
879 |
+
);
|
880 |
}
|
881 |
|
882 |
/**
|
918 |
*
|
919 |
* @param string $file the configuration file
|
920 |
* @throws Google_Exception
|
921 |
+
* @deprecated
|
922 |
*/
|
923 |
public function setAuthConfigFile($file)
|
924 |
{
|
930 |
* This structure should match the file downloaded from
|
931 |
* the "Download JSON" button on in the Google Developer
|
932 |
* Console.
|
933 |
+
* @param string|array $config the configuration json
|
934 |
* @throws Google_Exception
|
935 |
*/
|
936 |
public function setAuthConfig($config)
|
937 |
{
|
938 |
if (is_string($config)) {
|
939 |
if (!file_exists($config)) {
|
940 |
+
throw new InvalidArgumentException(sprintf('file "%s" does not exist', $config));
|
941 |
}
|
942 |
|
943 |
$json = file_get_contents($config);
|
977 |
/**
|
978 |
* Use when the service account has been delegated domain wide access.
|
979 |
*
|
980 |
+
* @param string $subject an email address account to impersonate
|
981 |
*/
|
982 |
public function setSubject($subject)
|
983 |
{
|
1051 |
*/
|
1052 |
public function getCache()
|
1053 |
{
|
1054 |
+
if (!$this->cache) {
|
1055 |
+
$this->cache = $this->createDefaultCache();
|
1056 |
+
}
|
1057 |
+
|
1058 |
return $this->cache;
|
1059 |
}
|
1060 |
|
1061 |
/**
|
1062 |
+
* @param array $cacheConfig
|
1063 |
*/
|
1064 |
public function setCacheConfig(array $cacheConfig)
|
1065 |
{
|
1090 |
protected function createDefaultLogger()
|
1091 |
{
|
1092 |
$logger = new Logger('google-api-php-client');
|
1093 |
+
if ($this->isAppEngine()) {
|
1094 |
+
$handler = new MonologSyslogHandler('app', LOG_USER, Logger::NOTICE);
|
1095 |
+
} else {
|
1096 |
+
$handler = new MonologStreamHandler('php://stderr', Logger::NOTICE);
|
1097 |
+
}
|
1098 |
+
$logger->pushHandler($handler);
|
1099 |
|
1100 |
return $logger;
|
1101 |
}
|
1102 |
|
1103 |
+
protected function createDefaultCache()
|
1104 |
+
{
|
1105 |
+
return new MemoryCacheItemPool;
|
1106 |
+
}
|
1107 |
+
|
1108 |
/**
|
1109 |
* Set the Http Client object
|
1110 |
* @param GuzzleHttp\ClientInterface $http
|
1119 |
*/
|
1120 |
public function getHttpClient()
|
1121 |
{
|
1122 |
+
if (null === $this->http) {
|
1123 |
$this->http = $this->createDefaultHttpClient();
|
1124 |
}
|
1125 |
|
1126 |
return $this->http;
|
1127 |
}
|
1128 |
|
1129 |
+
/**
|
1130 |
+
* Set the API format version.
|
1131 |
+
*
|
1132 |
+
* `true` will use V2, which may return more useful error messages.
|
1133 |
+
*
|
1134 |
+
* @param bool $value
|
1135 |
+
*/
|
1136 |
+
public function setApiFormatV2($value)
|
1137 |
+
{
|
1138 |
+
$this->config['api_format_v2'] = (bool) $value;
|
1139 |
+
}
|
1140 |
+
|
1141 |
protected function createDefaultHttpClient()
|
1142 |
{
|
1143 |
+
$guzzleVersion = null;
|
1144 |
+
if (defined('\GuzzleHttp\ClientInterface::MAJOR_VERSION')) {
|
1145 |
+
$guzzleVersion = ClientInterface::MAJOR_VERSION;
|
1146 |
+
} elseif (defined('\GuzzleHttp\ClientInterface::VERSION')) {
|
1147 |
+
$guzzleVersion = (int)substr(ClientInterface::VERSION, 0, 1);
|
1148 |
+
}
|
1149 |
|
1150 |
+
$options = ['exceptions' => false];
|
1151 |
+
if (5 === $guzzleVersion) {
|
1152 |
$options = [
|
1153 |
'base_url' => $this->config['base_path'],
|
1154 |
'defaults' => $options,
|
1155 |
];
|
1156 |
if ($this->isAppEngine()) {
|
1157 |
// set StreamHandler on AppEngine by default
|
1158 |
+
$options['handler'] = new StreamHandler();
|
1159 |
$options['defaults']['verify'] = '/etc/ca-certificates.crt';
|
1160 |
}
|
1161 |
+
} elseif (6 === $guzzleVersion || 7 === $guzzleVersion) {
|
1162 |
+
// guzzle 6 or 7
|
1163 |
$options['base_uri'] = $this->config['base_path'];
|
1164 |
+
} else {
|
1165 |
+
throw new LogicException('Could not find supported version of Guzzle.');
|
1166 |
}
|
1167 |
|
1168 |
return new Client($options);
|
1181 |
'client_email' => $this->config['client_email'],
|
1182 |
'private_key' => $signingKey,
|
1183 |
'type' => 'service_account',
|
1184 |
+
'quota_project_id' => $this->config['quota_project'],
|
1185 |
+
);
|
1186 |
+
$credentials = CredentialsLoader::makeCredentials(
|
1187 |
+
$scopes,
|
1188 |
+
$serviceAccountCredentials
|
1189 |
);
|
|
|
1190 |
} else {
|
1191 |
+
$credentials = ApplicationDefaultCredentials::getCredentials(
|
1192 |
+
$scopes,
|
1193 |
+
null,
|
1194 |
+
null,
|
1195 |
+
null,
|
1196 |
+
$this->config['quota_project']
|
1197 |
+
);
|
1198 |
}
|
1199 |
|
1200 |
// for service account domain-wide authority (impersonating a user)
|
vendor/google/apiclient/src/Google/Collection.php
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?php
|
2 |
|
3 |
if (!class_exists('Google_Client')) {
|
4 |
-
require_once
|
5 |
}
|
6 |
|
7 |
/**
|
@@ -15,31 +15,31 @@ class Google_Collection extends Google_Model implements Iterator, Countable
|
|
15 |
|
16 |
public function rewind()
|
17 |
{
|
18 |
-
if (isset($this->
|
19 |
-
&& is_array($this->
|
20 |
-
reset($this->
|
21 |
}
|
22 |
}
|
23 |
|
24 |
public function current()
|
25 |
{
|
26 |
$this->coerceType($this->key());
|
27 |
-
if (is_array($this->
|
28 |
-
return current($this->
|
29 |
}
|
30 |
}
|
31 |
|
32 |
public function key()
|
33 |
{
|
34 |
-
if (isset($this->
|
35 |
-
&& is_array($this->
|
36 |
-
return key($this->
|
37 |
}
|
38 |
}
|
39 |
|
40 |
public function next()
|
41 |
{
|
42 |
-
return next($this->
|
43 |
}
|
44 |
|
45 |
public function valid()
|
@@ -50,10 +50,10 @@ class Google_Collection extends Google_Model implements Iterator, Countable
|
|
50 |
|
51 |
public function count()
|
52 |
{
|
53 |
-
if (!isset($this->
|
54 |
return 0;
|
55 |
}
|
56 |
-
return count($this->
|
57 |
}
|
58 |
|
59 |
public function offsetExists($offset)
|
@@ -61,7 +61,7 @@ class Google_Collection extends Google_Model implements Iterator, Countable
|
|
61 |
if (!is_numeric($offset)) {
|
62 |
return parent::offsetExists($offset);
|
63 |
}
|
64 |
-
return isset($this->
|
65 |
}
|
66 |
|
67 |
public function offsetGet($offset)
|
@@ -70,7 +70,7 @@ class Google_Collection extends Google_Model implements Iterator, Countable
|
|
70 |
return parent::offsetGet($offset);
|
71 |
}
|
72 |
$this->coerceType($offset);
|
73 |
-
return $this->
|
74 |
}
|
75 |
|
76 |
public function offsetSet($offset, $value)
|
@@ -78,7 +78,7 @@ class Google_Collection extends Google_Model implements Iterator, Countable
|
|
78 |
if (!is_numeric($offset)) {
|
79 |
return parent::offsetSet($offset, $value);
|
80 |
}
|
81 |
-
$this->
|
82 |
}
|
83 |
|
84 |
public function offsetUnset($offset)
|
@@ -86,16 +86,15 @@ class Google_Collection extends Google_Model implements Iterator, Countable
|
|
86 |
if (!is_numeric($offset)) {
|
87 |
return parent::offsetUnset($offset);
|
88 |
}
|
89 |
-
unset($this->
|
90 |
}
|
91 |
|
92 |
private function coerceType($offset)
|
93 |
{
|
94 |
-
$
|
95 |
-
if (
|
96 |
-
$
|
97 |
-
|
98 |
-
new $type($this->modelData[$this->collection_key][$offset]);
|
99 |
}
|
100 |
}
|
101 |
}
|
1 |
<?php
|
2 |
|
3 |
if (!class_exists('Google_Client')) {
|
4 |
+
require_once __DIR__ . '/autoload.php';
|
5 |
}
|
6 |
|
7 |
/**
|
15 |
|
16 |
public function rewind()
|
17 |
{
|
18 |
+
if (isset($this->{$this->collection_key})
|
19 |
+
&& is_array($this->{$this->collection_key})) {
|
20 |
+
reset($this->{$this->collection_key});
|
21 |
}
|
22 |
}
|
23 |
|
24 |
public function current()
|
25 |
{
|
26 |
$this->coerceType($this->key());
|
27 |
+
if (is_array($this->{$this->collection_key})) {
|
28 |
+
return current($this->{$this->collection_key});
|
29 |
}
|
30 |
}
|
31 |
|
32 |
public function key()
|
33 |
{
|
34 |
+
if (isset($this->{$this->collection_key})
|
35 |
+
&& is_array($this->{$this->collection_key})) {
|
36 |
+
return key($this->{$this->collection_key});
|
37 |
}
|
38 |
}
|
39 |
|
40 |
public function next()
|
41 |
{
|
42 |
+
return next($this->{$this->collection_key});
|
43 |
}
|
44 |
|
45 |
public function valid()
|
50 |
|
51 |
public function count()
|
52 |
{
|
53 |
+
if (!isset($this->{$this->collection_key})) {
|
54 |
return 0;
|
55 |
}
|
56 |
+
return count($this->{$this->collection_key});
|
57 |
}
|
58 |
|
59 |
public function offsetExists($offset)
|
61 |
if (!is_numeric($offset)) {
|
62 |
return parent::offsetExists($offset);
|
63 |
}
|
64 |
+
return isset($this->{$this->collection_key}[$offset]);
|
65 |
}
|
66 |
|
67 |
public function offsetGet($offset)
|
70 |
return parent::offsetGet($offset);
|
71 |
}
|
72 |
$this->coerceType($offset);
|
73 |
+
return $this->{$this->collection_key}[$offset];
|
74 |
}
|
75 |
|
76 |
public function offsetSet($offset, $value)
|
78 |
if (!is_numeric($offset)) {
|
79 |
return parent::offsetSet($offset, $value);
|
80 |
}
|
81 |
+
$this->{$this->collection_key}[$offset] = $value;
|
82 |
}
|
83 |
|
84 |
public function offsetUnset($offset)
|
86 |
if (!is_numeric($offset)) {
|
87 |
return parent::offsetUnset($offset);
|
88 |
}
|
89 |
+
unset($this->{$this->collection_key}[$offset]);
|
90 |
}
|
91 |
|
92 |
private function coerceType($offset)
|
93 |
{
|
94 |
+
$keyType = $this->keyType($this->collection_key);
|
95 |
+
if ($keyType && !is_object($this->{$this->collection_key}[$offset])) {
|
96 |
+
$this->{$this->collection_key}[$offset] =
|
97 |
+
new $keyType($this->{$this->collection_key}[$offset]);
|
|
|
98 |
}
|
99 |
}
|
100 |
}
|
vendor/google/apiclient/src/Google/Http/Batch.php
CHANGED
@@ -23,6 +23,10 @@ use Psr\Http\Message\ResponseInterface;
|
|
23 |
|
24 |
/**
|
25 |
* Class to handle batched requests to the Google API service.
|
|
|
|
|
|
|
|
|
26 |
*/
|
27 |
class Google_Http_Batch
|
28 |
{
|
@@ -42,10 +46,20 @@ class Google_Http_Batch
|
|
42 |
/** @var Google_Client */
|
43 |
private $client;
|
44 |
|
45 |
-
|
46 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
$this->client = $client;
|
48 |
-
$this->boundary = mt_rand();
|
|
|
|
|
49 |
}
|
50 |
|
51 |
public function add(RequestInterface $request, $key = false)
|
@@ -104,7 +118,7 @@ EOF;
|
|
104 |
|
105 |
$body .= "--{$this->boundary}--";
|
106 |
$body = trim($body);
|
107 |
-
$url =
|
108 |
$headers = array(
|
109 |
'Content-Type' => sprintf('multipart/mixed; boundary=%s', $this->boundary),
|
110 |
'Content-Length' => strlen($body),
|
@@ -128,7 +142,7 @@ EOF;
|
|
128 |
$contentType = explode(';', $contentType);
|
129 |
$boundary = false;
|
130 |
foreach ($contentType as $part) {
|
131 |
-
$part =
|
132 |
if (isset($part[0]) && 'boundary' == trim($part[0])) {
|
133 |
$boundary = $part[1];
|
134 |
}
|
@@ -160,10 +174,6 @@ EOF;
|
|
160 |
|
161 |
// Need content id.
|
162 |
$key = $headers['content-id'];
|
163 |
-
$class = '';
|
164 |
-
if (!empty($this->expected_classes[$key])) {
|
165 |
-
$class = $this->expected_classes[$key];
|
166 |
-
}
|
167 |
|
168 |
try {
|
169 |
$response = Google_Http_REST::decodeHttpResponse($response, $requests[$i-1]);
|
23 |
|
24 |
/**
|
25 |
* Class to handle batched requests to the Google API service.
|
26 |
+
*
|
27 |
+
* Note that calls to `Google_Http_Batch::execute()` do not clear the queued
|
28 |
+
* requests. To start a new batch, be sure to create a new instance of this
|
29 |
+
* class.
|
30 |
*/
|
31 |
class Google_Http_Batch
|
32 |
{
|
46 |
/** @var Google_Client */
|
47 |
private $client;
|
48 |
|
49 |
+
private $rootUrl;
|
50 |
+
|
51 |
+
private $batchPath;
|
52 |
+
|
53 |
+
public function __construct(
|
54 |
+
Google_Client $client,
|
55 |
+
$boundary = false,
|
56 |
+
$rootUrl = null,
|
57 |
+
$batchPath = null
|
58 |
+
) {
|
59 |
$this->client = $client;
|
60 |
+
$this->boundary = $boundary ?: mt_rand();
|
61 |
+
$this->rootUrl = rtrim($rootUrl ?: $this->client->getConfig('base_path'), '/');
|
62 |
+
$this->batchPath = $batchPath ?: self::BATCH_PATH;
|
63 |
}
|
64 |
|
65 |
public function add(RequestInterface $request, $key = false)
|
118 |
|
119 |
$body .= "--{$this->boundary}--";
|
120 |
$body = trim($body);
|
121 |
+
$url = $this->rootUrl . '/' . $this->batchPath;
|
122 |
$headers = array(
|
123 |
'Content-Type' => sprintf('multipart/mixed; boundary=%s', $this->boundary),
|
124 |
'Content-Length' => strlen($body),
|
142 |
$contentType = explode(';', $contentType);
|
143 |
$boundary = false;
|
144 |
foreach ($contentType as $part) {
|
145 |
+
$part = explode('=', $part, 2);
|
146 |
if (isset($part[0]) && 'boundary' == trim($part[0])) {
|
147 |
$boundary = $part[1];
|
148 |
}
|
174 |
|
175 |
// Need content id.
|
176 |
$key = $headers['content-id'];
|
|
|
|
|
|
|
|
|
177 |
|
178 |
try {
|
179 |
$response = Google_Http_REST::decodeHttpResponse($response, $requests[$i-1]);
|
vendor/google/apiclient/src/Google/Http/MediaFileUpload.php
CHANGED
@@ -67,9 +67,11 @@ class Google_Http_MediaFileUpload
|
|
67 |
private $httpResultCode;
|
68 |
|
69 |
/**
|
70 |
-
* @param $
|
71 |
-
* @param $
|
72 |
-
* @param $
|
|
|
|
|
73 |
* @param bool $chunkSize File will be uploaded in chunks of this many bytes.
|
74 |
* only used if resumable=True
|
75 |
*/
|
@@ -112,8 +114,8 @@ class Google_Http_MediaFileUpload
|
|
112 |
|
113 |
/**
|
114 |
* Send the next part of the file to upload.
|
115 |
-
* @param
|
116 |
-
* at construct time.
|
117 |
*/
|
118 |
public function nextChunk($chunk = false)
|
119 |
{
|
@@ -165,8 +167,11 @@ class Google_Http_MediaFileUpload
|
|
165 |
|
166 |
if (308 == $this->httpResultCode) {
|
167 |
// Track the amount uploaded.
|
168 |
-
$range =
|
169 |
-
|
|
|
|
|
|
|
170 |
|
171 |
// Allow for changing upload URLs.
|
172 |
$location = $response->getHeaderLine('location');
|
@@ -221,9 +226,7 @@ class Google_Http_MediaFileUpload
|
|
221 |
Uri::withQueryValue($request->getUri(), 'uploadType', $uploadType)
|
222 |
);
|
223 |
|
224 |
-
$mimeType = $this->mimeType
|
225 |
-
$this->mimeType :
|
226 |
-
$request->getHeaderLine('content-type');
|
227 |
|
228 |
if (self::UPLOAD_RESUMABLE_TYPE == $uploadType) {
|
229 |
$contentType = $mimeType;
|
@@ -233,7 +236,7 @@ class Google_Http_MediaFileUpload
|
|
233 |
$postBody = $this->data;
|
234 |
} else if (self::UPLOAD_MULTIPART_TYPE == $uploadType) {
|
235 |
// This is a multipart/related upload.
|
236 |
-
$boundary = $this->boundary
|
237 |
$boundary = str_replace('"', '', $boundary);
|
238 |
$contentType = 'multipart/related; boundary=' . $boundary;
|
239 |
$related = "--$boundary\r\n";
|
@@ -280,7 +283,7 @@ class Google_Http_MediaFileUpload
|
|
280 |
|
281 |
public function getResumeUri()
|
282 |
{
|
283 |
-
if (
|
284 |
$this->resumeUri = $this->fetchResumeUri();
|
285 |
}
|
286 |
|
@@ -289,7 +292,6 @@ class Google_Http_MediaFileUpload
|
|
289 |
|
290 |
private function fetchResumeUri()
|
291 |
{
|
292 |
-
$result = null;
|
293 |
$body = $this->request->getBody();
|
294 |
if ($body) {
|
295 |
$headers = array(
|
@@ -317,7 +319,7 @@ class Google_Http_MediaFileUpload
|
|
317 |
if (isset($body['error']['errors'])) {
|
318 |
$message .= ': ';
|
319 |
foreach ($body['error']['errors'] as $error) {
|
320 |
-
$message .= "{$error[domain]}, {$error[message]};";
|
321 |
}
|
322 |
$message = rtrim($message, ';');
|
323 |
}
|
67 |
private $httpResultCode;
|
68 |
|
69 |
/**
|
70 |
+
* @param Google_Client $client
|
71 |
+
* @param RequestInterface $request
|
72 |
+
* @param string $mimeType
|
73 |
+
* @param string $data The bytes you want to upload.
|
74 |
+
* @param bool $resumable
|
75 |
* @param bool $chunkSize File will be uploaded in chunks of this many bytes.
|
76 |
* only used if resumable=True
|
77 |
*/
|
114 |
|
115 |
/**
|
116 |
* Send the next part of the file to upload.
|
117 |
+
* @param string|bool $chunk Optional. The next set of bytes to send. If false will
|
118 |
+
* use $data passed at construct time.
|
119 |
*/
|
120 |
public function nextChunk($chunk = false)
|
121 |
{
|
167 |
|
168 |
if (308 == $this->httpResultCode) {
|
169 |
// Track the amount uploaded.
|
170 |
+
$range = $response->getHeaderLine('range');
|
171 |
+
if ($range) {
|
172 |
+
$range_array = explode('-', $range);
|
173 |
+
$this->progress = $range_array[1] + 1;
|
174 |
+
}
|
175 |
|
176 |
// Allow for changing upload URLs.
|
177 |
$location = $response->getHeaderLine('location');
|
226 |
Uri::withQueryValue($request->getUri(), 'uploadType', $uploadType)
|
227 |
);
|
228 |
|
229 |
+
$mimeType = $this->mimeType ?: $request->getHeaderLine('content-type');
|
|
|
|
|
230 |
|
231 |
if (self::UPLOAD_RESUMABLE_TYPE == $uploadType) {
|
232 |
$contentType = $mimeType;
|
236 |
$postBody = $this->data;
|
237 |
} else if (self::UPLOAD_MULTIPART_TYPE == $uploadType) {
|
238 |
// This is a multipart/related upload.
|
239 |
+
$boundary = $this->boundary ?: mt_rand();
|
240 |
$boundary = str_replace('"', '', $boundary);
|
241 |
$contentType = 'multipart/related; boundary=' . $boundary;
|
242 |
$related = "--$boundary\r\n";
|
283 |
|
284 |
public function getResumeUri()
|
285 |
{
|
286 |
+
if (null === $this->resumeUri) {
|
287 |
$this->resumeUri = $this->fetchResumeUri();
|
288 |
}
|
289 |
|
292 |
|
293 |
private function fetchResumeUri()
|
294 |
{
|
|
|
295 |
$body = $this->request->getBody();
|
296 |
if ($body) {
|
297 |
$headers = array(
|
319 |
if (isset($body['error']['errors'])) {
|
320 |
$message .= ': ';
|
321 |
foreach ($body['error']['errors'] as $error) {
|
322 |
+
$message .= "{$error['domain']}, {$error['message']};";
|
323 |
}
|
324 |
$message = rtrim($message, ';');
|
325 |
}
|
vendor/google/apiclient/src/Google/Http/REST.php
CHANGED
@@ -33,6 +33,9 @@ class Google_Http_REST
|
|
33 |
*
|
34 |
* @param Google_Client $client
|
35 |
* @param Psr\Http\Message\RequestInterface $req
|
|
|
|
|
|
|
36 |
* @return array decoded result
|
37 |
* @throws Google_Service_Exception on server side error (ie: not authenticated,
|
38 |
* invalid or malformed post body, invalid url)
|
@@ -51,7 +54,7 @@ class Google_Http_REST
|
|
51 |
array($client, $request, $expectedClass)
|
52 |
);
|
53 |
|
54 |
-
if (
|
55 |
$runner->setRetryMap($retryMap);
|
56 |
}
|
57 |
|
@@ -63,6 +66,7 @@ class Google_Http_REST
|
|
63 |
*
|
64 |
* @param Google_Client $client
|
65 |
* @param Psr\Http\Message\RequestInterface $request
|
|
|
66 |
* @return array decoded result
|
67 |
* @throws Google_Service_Exception on server side error (ie: not authenticated,
|
68 |
* invalid or malformed post body, invalid url)
|
@@ -100,6 +104,7 @@ class Google_Http_REST
|
|
100 |
* @throws Google_Service_Exception
|
101 |
* @param Psr\Http\Message\RequestInterface $response The http response to be decoded.
|
102 |
* @param Psr\Http\Message\ResponseInterface $response
|
|
|
103 |
* @return mixed|null
|
104 |
*/
|
105 |
public static function decodeHttpResponse(
|
@@ -110,7 +115,7 @@ class Google_Http_REST
|
|
110 |
$code = $response->getStatusCode();
|
111 |
|
112 |
// retry strategy
|
113 |
-
if (
|
114 |
// if we errored out, it should be safe to grab the response body
|
115 |
$body = (string) $response->getBody();
|
116 |
|
@@ -149,7 +154,7 @@ class Google_Http_REST
|
|
149 |
}
|
150 |
|
151 |
// if we don't have a request, we just use what's passed in
|
152 |
-
if (
|
153 |
return $expectedClass;
|
154 |
}
|
155 |
|
33 |
*
|
34 |
* @param Google_Client $client
|
35 |
* @param Psr\Http\Message\RequestInterface $req
|
36 |
+
* @param string $expectedClass
|
37 |
+
* @param array $config
|
38 |
+
* @param array $retryMap
|
39 |
* @return array decoded result
|
40 |
* @throws Google_Service_Exception on server side error (ie: not authenticated,
|
41 |
* invalid or malformed post body, invalid url)
|
54 |
array($client, $request, $expectedClass)
|
55 |
);
|
56 |
|
57 |
+
if (null !== $retryMap) {
|
58 |
$runner->setRetryMap($retryMap);
|
59 |
}
|
60 |
|
66 |
*
|
67 |
* @param Google_Client $client
|
68 |
* @param Psr\Http\Message\RequestInterface $request
|
69 |
+
* @param string $expectedClass
|
70 |
* @return array decoded result
|
71 |
* @throws Google_Service_Exception on server side error (ie: not authenticated,
|
72 |
* invalid or malformed post body, invalid url)
|
104 |
* @throws Google_Service_Exception
|
105 |
* @param Psr\Http\Message\RequestInterface $response The http response to be decoded.
|
106 |
* @param Psr\Http\Message\ResponseInterface $response
|
107 |
+
* @param string $expectedClass
|
108 |
* @return mixed|null
|
109 |
*/
|
110 |
public static function decodeHttpResponse(
|
115 |
$code = $response->getStatusCode();
|
116 |
|
117 |
// retry strategy
|
118 |
+
if (intVal($code) >= 400) {
|
119 |
// if we errored out, it should be safe to grab the response body
|
120 |
$body = (string) $response->getBody();
|
121 |
|
154 |
}
|
155 |
|
156 |
// if we don't have a request, we just use what's passed in
|
157 |
+
if (null === $request) {
|
158 |
return $expectedClass;
|
159 |
}
|
160 |
|
vendor/google/apiclient/src/Google/Model.php
CHANGED
@@ -53,32 +53,30 @@ class Google_Model implements ArrayAccess
|
|
53 |
*/
|
54 |
public function __get($key)
|
55 |
{
|
56 |
-
$
|
57 |
$keyDataType = $this->dataType($key);
|
58 |
-
if (
|
59 |
if (isset($this->modelData[$key])) {
|
60 |
$val = $this->modelData[$key];
|
61 |
-
}
|
62 |
-
($this->$keyDataType == 'array' || $this->$keyDataType == 'map')) {
|
63 |
$val = array();
|
64 |
} else {
|
65 |
$val = null;
|
66 |
}
|
67 |
|
68 |
if ($this->isAssociativeArray($val)) {
|
69 |
-
if (
|
70 |
foreach ($val as $arrayKey => $arrayItem) {
|
71 |
$this->modelData[$key][$arrayKey] =
|
72 |
-
$
|
73 |
}
|
74 |
} else {
|
75 |
-
$this->modelData[$key] = $
|
76 |
}
|
77 |
} else if (is_array($val)) {
|
78 |
$arrayObject = array();
|
79 |
foreach ($val as $arrayIndex => $arrayItem) {
|
80 |
-
$arrayObject[$arrayIndex] =
|
81 |
-
$this->createObjectFromName($keyTypeName, $arrayItem);
|
82 |
}
|
83 |
$this->modelData[$key] = $arrayObject;
|
84 |
}
|
@@ -98,8 +96,24 @@ class Google_Model implements ArrayAccess
|
|
98 |
{
|
99 |
// Hard initialise simple types, lazy load more complex ones.
|
100 |
foreach ($array as $key => $val) {
|
101 |
-
if (
|
102 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
103 |
$this->$key = $val;
|
104 |
unset($array[$key]);
|
105 |
} elseif (property_exists($this, $camelKey = $this->camelCase($key))) {
|
@@ -192,8 +206,7 @@ class Google_Model implements ArrayAccess
|
|
192 |
*/
|
193 |
private function getMappedName($key)
|
194 |
{
|
195 |
-
if (isset($this->internal_gapi_mappings)
|
196 |
-
isset($this->internal_gapi_mappings[$key])) {
|
197 |
$key = $this->internal_gapi_mappings[$key];
|
198 |
}
|
199 |
return $key;
|
@@ -218,19 +231,6 @@ class Google_Model implements ArrayAccess
|
|
218 |
return false;
|
219 |
}
|
220 |
|
221 |
-
/**
|
222 |
-
* Given a variable name, discover its type.
|
223 |
-
*
|
224 |
-
* @param $name
|
225 |
-
* @param $item
|
226 |
-
* @return object The object from the item.
|
227 |
-
*/
|
228 |
-
private function createObjectFromName($name, $item)
|
229 |
-
{
|
230 |
-
$type = $this->$name;
|
231 |
-
return new $type($item);
|
232 |
-
}
|
233 |
-
|
234 |
/**
|
235 |
* Verify if $obj is an array.
|
236 |
* @throws Google_Exception Thrown if $obj isn't an array.
|
@@ -275,12 +275,21 @@ class Google_Model implements ArrayAccess
|
|
275 |
|
276 |
protected function keyType($key)
|
277 |
{
|
278 |
-
|
|
|
|
|
|
|
|
|
|
|
279 |
}
|
280 |
|
281 |
protected function dataType($key)
|
282 |
{
|
283 |
-
|
|
|
|
|
|
|
|
|
284 |
}
|
285 |
|
286 |
public function __isset($key)
|
53 |
*/
|
54 |
public function __get($key)
|
55 |
{
|
56 |
+
$keyType = $this->keyType($key);
|
57 |
$keyDataType = $this->dataType($key);
|
58 |
+
if ($keyType && !isset($this->processed[$key])) {
|
59 |
if (isset($this->modelData[$key])) {
|
60 |
$val = $this->modelData[$key];
|
61 |
+
} elseif ($keyDataType == 'array' || $keyDataType == 'map') {
|
|
|
62 |
$val = array();
|
63 |
} else {
|
64 |
$val = null;
|
65 |
}
|
66 |
|
67 |
if ($this->isAssociativeArray($val)) {
|
68 |
+
if ($keyDataType && 'map' == $keyDataType) {
|
69 |
foreach ($val as $arrayKey => $arrayItem) {
|
70 |
$this->modelData[$key][$arrayKey] =
|
71 |
+
new $keyType($arrayItem);
|
72 |
}
|
73 |
} else {
|
74 |
+
$this->modelData[$key] = new $keyType($val);
|
75 |
}
|
76 |
} else if (is_array($val)) {
|
77 |
$arrayObject = array();
|
78 |
foreach ($val as $arrayIndex => $arrayItem) {
|
79 |
+
$arrayObject[$arrayIndex] = new $keyType($arrayItem);
|
|
|
80 |
}
|
81 |
$this->modelData[$key] = $arrayObject;
|
82 |
}
|
96 |
{
|
97 |
// Hard initialise simple types, lazy load more complex ones.
|
98 |
foreach ($array as $key => $val) {
|
99 |
+
if ($keyType = $this->keyType($key)) {
|
100 |
+
$dataType = $this->dataType($key);
|
101 |
+
if ($dataType == 'array' || $dataType == 'map') {
|
102 |
+
$this->$key = array();
|
103 |
+
foreach ($val as $itemKey => $itemVal) {
|
104 |
+
if ($itemVal instanceof $keyType) {
|
105 |
+
$this->{$key}[$itemKey] = $itemVal;
|
106 |
+
} else {
|
107 |
+
$this->{$key}[$itemKey] = new $keyType($itemVal);
|
108 |
+
}
|
109 |
+
}
|
110 |
+
} elseif ($val instanceof $keyType) {
|
111 |
+
$this->$key = $val;
|
112 |
+
} else {
|
113 |
+
$this->$key = new $keyType($val);
|
114 |
+
}
|
115 |
+
unset($array[$key]);
|
116 |
+
} elseif (property_exists($this, $key)) {
|
117 |
$this->$key = $val;
|
118 |
unset($array[$key]);
|
119 |
} elseif (property_exists($this, $camelKey = $this->camelCase($key))) {
|
206 |
*/
|
207 |
private function getMappedName($key)
|
208 |
{
|
209 |
+
if (isset($this->internal_gapi_mappings, $this->internal_gapi_mappings[$key])) {
|
|
|
210 |
$key = $this->internal_gapi_mappings[$key];
|
211 |
}
|
212 |
return $key;
|
231 |
return false;
|
232 |
}
|
233 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
234 |
/**
|
235 |
* Verify if $obj is an array.
|
236 |
* @throws Google_Exception Thrown if $obj isn't an array.
|
275 |
|
276 |
protected function keyType($key)
|
277 |
{
|
278 |
+
$keyType = $key . "Type";
|
279 |
+
|
280 |
+
// ensure keyType is a valid class
|
281 |
+
if (property_exists($this, $keyType) && class_exists($this->$keyType)) {
|
282 |
+
return $this->$keyType;
|
283 |
+
}
|
284 |
}
|
285 |
|
286 |
protected function dataType($key)
|
287 |
{
|
288 |
+
$dataType = $key . "DataType";
|
289 |
+
|
290 |
+
if (property_exists($this, $dataType)) {
|
291 |
+
return $this->$dataType;
|
292 |
+
}
|
293 |
}
|
294 |
|
295 |
public function __isset($key)
|
vendor/google/apiclient/src/Google/Service/Exception.php
CHANGED
@@ -31,7 +31,6 @@ class Google_Service_Exception extends Google_Exception
|
|
31 |
* @param Exception|null $previous
|
32 |
* @param [{string, string}] errors List of errors returned in an HTTP
|
33 |
* response. Defaults to [].
|
34 |
-
* @param array|null $retryMap Map of errors with retry counts.
|
35 |
*/
|
36 |
public function __construct(
|
37 |
$message,
|
31 |
* @param Exception|null $previous
|
32 |
* @param [{string, string}] errors List of errors returned in an HTTP
|
33 |
* response. Defaults to [].
|
|
|
34 |
*/
|
35 |
public function __construct(
|
36 |
$message,
|
vendor/google/apiclient/src/Google/Service/Resource.php
CHANGED
@@ -255,8 +255,14 @@ class Google_Service_Resource
|
|
255 |
*/
|
256 |
public function createRequestUri($restPath, $params)
|
257 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
258 |
// code for leading slash
|
259 |
-
$requestUrl = $this->servicePath . $restPath;
|
260 |
if ($this->rootUrl) {
|
261 |
if ('/' !== substr($this->rootUrl, -1) && '/' !== substr($requestUrl, 0, 1)) {
|
262 |
$requestUrl = '/' . $requestUrl;
|
@@ -267,12 +273,12 @@ class Google_Service_Resource
|
|
267 |
$queryVars = array();
|
268 |
foreach ($params as $paramName => $paramSpec) {
|
269 |
if ($paramSpec['type'] == 'boolean') {
|
270 |
-
$paramSpec['value'] =
|
271 |
}
|
272 |
if ($paramSpec['location'] == 'path') {
|
273 |
$uriTemplateVars[$paramName] = $paramSpec['value'];
|
274 |
} else if ($paramSpec['location'] == 'query') {
|
275 |
-
if (
|
276 |
foreach ($paramSpec['value'] as $value) {
|
277 |
$queryVars[] = $paramName . '=' . rawurlencode(rawurldecode($value));
|
278 |
}
|
@@ -288,7 +294,7 @@ class Google_Service_Resource
|
|
288 |
}
|
289 |
|
290 |
if (count($queryVars)) {
|
291 |
-
$requestUrl .= '?' . implode(
|
292 |
}
|
293 |
|
294 |
return $requestUrl;
|
255 |
*/
|
256 |
public function createRequestUri($restPath, $params)
|
257 |
{
|
258 |
+
// Override the default servicePath address if the $restPath use a /
|
259 |
+
if ('/' == substr($restPath, 0, 1)) {
|
260 |
+
$requestUrl = substr($restPath, 1);
|
261 |
+
} else {
|
262 |
+
$requestUrl = $this->servicePath . $restPath;
|
263 |
+
}
|
264 |
+
|
265 |
// code for leading slash
|
|
|
266 |
if ($this->rootUrl) {
|
267 |
if ('/' !== substr($this->rootUrl, -1) && '/' !== substr($requestUrl, 0, 1)) {
|
268 |
$requestUrl = '/' . $requestUrl;
|
273 |
$queryVars = array();
|
274 |
foreach ($params as $paramName => $paramSpec) {
|
275 |
if ($paramSpec['type'] == 'boolean') {
|
276 |
+
$paramSpec['value'] = $paramSpec['value'] ? 'true' : 'false';
|
277 |
}
|
278 |
if ($paramSpec['location'] == 'path') {
|
279 |
$uriTemplateVars[$paramName] = $paramSpec['value'];
|
280 |
} else if ($paramSpec['location'] == 'query') {
|
281 |
+
if (is_array($paramSpec['value'])) {
|
282 |
foreach ($paramSpec['value'] as $value) {
|
283 |
$queryVars[] = $paramName . '=' . rawurlencode(rawurldecode($value));
|
284 |
}
|
294 |
}
|
295 |
|
296 |
if (count($queryVars)) {
|
297 |
+
$requestUrl .= '?' . implode('&', $queryVars);
|
298 |
}
|
299 |
|
300 |
return $requestUrl;
|
vendor/google/apiclient/src/Google/Task/Composer.php
ADDED
@@ -0,0 +1,104 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Copyright 2020 Google LLC
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
6 |
+
* use this file except in compliance with the License. You may obtain a copy of
|
7 |
+
* 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, WITHOUT
|
13 |
+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
14 |
+
* License for the specific language governing permissions and limitations under
|
15 |
+
* the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
use Composer\Script\Event;
|
19 |
+
use Symfony\Component\Filesystem\Filesystem;
|
20 |
+
use Symfony\Component\Finder\Finder;
|
21 |
+
|
22 |
+
class Google_Task_Composer
|
23 |
+
{
|
24 |
+
/**
|
25 |
+
* @param Event $event Composer event passed in for any script method
|
26 |
+
* @param FilesystemInterface $filesystem Optional. Used for testing.
|
27 |
+
*/
|
28 |
+
public static function cleanup(
|
29 |
+
Event $event,
|
30 |
+
Filesystem $filesystem = null
|
31 |
+
) {
|
32 |
+
$composer = $event->getComposer();
|
33 |
+
$extra = $composer->getPackage()->getExtra();
|
34 |
+
$servicesToKeep = isset($extra['google/apiclient-services']) ?
|
35 |
+
$extra['google/apiclient-services'] : [];
|
36 |
+
if ($servicesToKeep) {
|
37 |
+
$serviceDir = sprintf(
|
38 |
+
'%s/google/apiclient-services/src/Google/Service',
|
39 |
+
$composer->getConfig()->get('vendor-dir')
|
40 |
+
);
|
41 |
+
self::verifyServicesToKeep($serviceDir, $servicesToKeep);
|
42 |
+
$finder = self::getServicesToRemove($serviceDir, $servicesToKeep);
|
43 |
+
$filesystem = $filesystem ?: new Filesystem();
|
44 |
+
if (0 !== $count = count($finder)) {
|
45 |
+
$event->getIO()->write(
|
46 |
+
sprintf(
|
47 |
+
'Removing %s google services',
|
48 |
+
$count
|
49 |
+
)
|
50 |
+
);
|
51 |
+
foreach ($finder as $file) {
|
52 |
+
$realpath = $file->getRealPath();
|
53 |
+
$filesystem->remove($realpath);
|
54 |
+
$filesystem->remove($realpath . '.php');
|
55 |
+
}
|
56 |
+
}
|
57 |
+
}
|
58 |
+
}
|
59 |
+
|
60 |
+
/**
|
61 |
+
* @throws InvalidArgumentException when the service doesn't exist
|
62 |
+
*/
|
63 |
+
private static function verifyServicesToKeep(
|
64 |
+
$serviceDir,
|
65 |
+
array $servicesToKeep
|
66 |
+
) {
|
67 |
+
$finder = (new Finder())
|
68 |
+
->directories()
|
69 |
+
->depth('== 0');
|
70 |
+
|
71 |
+
foreach ($servicesToKeep as $service) {
|
72 |
+
if (!preg_match('/^[a-zA-Z0-9]*$/', $service)) {
|
73 |
+
throw new \InvalidArgumentException(
|
74 |
+
sprintf(
|
75 |
+
'Invalid Google service name "%s"',
|
76 |
+
$service
|
77 |
+
)
|
78 |
+
);
|
79 |
+
}
|
80 |
+
try {
|
81 |
+
$finder->in($serviceDir . '/' . $service);
|
82 |
+
} catch (\InvalidArgumentException $e) {
|
83 |
+
throw new \InvalidArgumentException(
|
84 |
+
sprintf(
|
85 |
+
'Google service "%s" does not exist or was removed previously',
|
86 |
+
$service
|
87 |
+
)
|
88 |
+
);
|
89 |
+
}
|
90 |
+
}
|
91 |
+
}
|
92 |
+
|
93 |
+
private static function getServicesToRemove(
|
94 |
+
$serviceDir,
|
95 |
+
array $servicesToKeep
|
96 |
+
) {
|
97 |
+
// find all files in the current directory
|
98 |
+
return (new Finder())
|
99 |
+
->directories()
|
100 |
+
->depth('== 0')
|
101 |
+
->in($serviceDir)
|
102 |
+
->exclude($servicesToKeep);
|
103 |
+
}
|
104 |
+
}
|
vendor/google/apiclient/src/Google/Task/Runner.php
CHANGED
@@ -55,10 +55,6 @@ class Google_Task_Runner
|
|
55 |
*/
|
56 |
private $maxAttempts = 1;
|
57 |
|
58 |
-
/**
|
59 |
-
* @var string $name The name of the current task (used for logging).
|
60 |
-
*/
|
61 |
-
private $name;
|
62 |
/**
|
63 |
* @var callable $action The task to run and possibly retry.
|
64 |
*/
|
@@ -153,7 +149,6 @@ class Google_Task_Runner
|
|
153 |
);
|
154 |
}
|
155 |
|
156 |
-
$this->name = $name;
|
157 |
$this->action = $action;
|
158 |
$this->arguments = $arguments;
|
159 |
}
|
@@ -269,8 +264,10 @@ class Google_Task_Runner
|
|
269 |
return $this->retryMap[$code];
|
270 |
}
|
271 |
|
272 |
-
if (
|
273 |
-
|
|
|
|
|
274 |
return $this->retryMap[$errors[0]['reason']];
|
275 |
}
|
276 |
|
55 |
*/
|
56 |
private $maxAttempts = 1;
|
57 |
|
|
|
|
|
|
|
|
|
58 |
/**
|
59 |
* @var callable $action The task to run and possibly retry.
|
60 |
*/
|
149 |
);
|
150 |
}
|
151 |
|
|
|
152 |
$this->action = $action;
|
153 |
$this->arguments = $arguments;
|
154 |
}
|
264 |
return $this->retryMap[$code];
|
265 |
}
|
266 |
|
267 |
+
if (
|
268 |
+
!empty($errors) &&
|
269 |
+
isset($errors[0]['reason'], $this->retryMap[$errors[0]['reason']])
|
270 |
+
) {
|
271 |
return $this->retryMap[$errors[0]['reason']];
|
272 |
}
|
273 |
|
vendor/google/apiclient/style/ruleset.xml
DELETED
@@ -1,159 +0,0 @@
|
|
1 |
-
<?xml version="1.0"?>
|
2 |
-
<ruleset name="GAPI">
|
3 |
-
<description>The Google API client library coding standard.</description>
|
4 |
-
|
5 |
-
<!-- PHP code MUST use the long <?php ?> tags or the short-echo <?= ?> tags; it MUST NOT use the other tag variations. -->
|
6 |
-
<rule ref="Generic.PHP.DisallowShortOpenTag.EchoFound">
|
7 |
-
<severity>0</severity>
|
8 |
-
</rule>
|
9 |
-
|
10 |
-
<!-- PHP code MUST use only UTF-8 without BOM. -->
|
11 |
-
<rule ref="Generic.Files.ByteOrderMark"/>
|
12 |
-
|
13 |
-
<!-- Check for duplicated class names -->
|
14 |
-
<rule ref="Generic.Classes.DuplicateClassName" />
|
15 |
-
|
16 |
-
<!-- Class constants MUST be declared in all upper case with underscore separators. -->
|
17 |
-
<rule ref="Generic.NamingConventions.UpperCaseConstantName"/>
|
18 |
-
|
19 |
-
<!-- Method names MUST be declared in camelCase(). -->
|
20 |
-
<rule ref="Generic.NamingConventions.CamelCapsFunctionName">
|
21 |
-
<properties>
|
22 |
-
<property name="strict" value="false"/>
|
23 |
-
</properties>
|
24 |
-
<!-- Generated libs have some properties that break this! -->
|
25 |
-
<exclude-pattern>Service/*.php</exclude-pattern>
|
26 |
-
</rule>
|
27 |
-
|
28 |
-
<!-- All PHP files MUST use the Unix LF (linefeed) line ending. -->
|
29 |
-
<rule ref="Generic.Files.LineEndings">
|
30 |
-
<properties>
|
31 |
-
<property name="eolChar" value="\n"/>
|
32 |
-
</properties>
|
33 |
-
</rule>
|
34 |
-
|
35 |
-
<!-- All PHP files MUST end with a single blank line. -->
|
36 |
-
<rule ref="PSR2.Files.EndFileNewline" />
|
37 |
-
|
38 |
-
<!-- The closing ?> tag MUST be omitted from files containing only PHP. -->
|
39 |
-
<rule ref="Zend.Files.ClosingTag"/>
|
40 |
-
|
41 |
-
<!-- The soft limit on line length MUST be 100 characters; automated style checkers MUST warn but MUST NOT error at the soft limit. -->
|
42 |
-
<rule ref="Generic.Files.LineLength">
|
43 |
-
<properties>
|
44 |
-
<property name="lineLimit" value="100"/>
|
45 |
-
<property name="absoluteLineLimit" value="120"/>
|
46 |
-
</properties>
|
47 |
-
<!-- Generated libs have some rather long class names that break this! -->
|
48 |
-
<exclude-pattern>Service/*.php</exclude-pattern>
|
49 |
-
</rule>
|
50 |
-
|
51 |
-
<!-- There MUST NOT be trailing whitespace at the end of non-blank lines. -->
|
52 |
-
<rule ref="Squiz.WhiteSpace.SuperfluousWhitespace">
|
53 |
-
<properties>
|
54 |
-
<property name="ignoreBlankLines" value="true"/>
|
55 |
-
</properties>
|
56 |
-
</rule>
|
57 |
-
<rule ref="Squiz.WhiteSpace.SuperfluousWhitespace.StartFile">
|
58 |
-
<severity>0</severity>
|
59 |
-
</rule>
|
60 |
-
<rule ref="Squiz.WhiteSpace.SuperfluousWhitespace.EndFile">
|
61 |
-
<severity>0</severity>
|
62 |
-
</rule>
|
63 |
-
<rule ref="Squiz.WhiteSpace.SuperfluousWhitespace.EmptyLines">
|
64 |
-
<severity>0</severity>
|
65 |
-
</rule>
|
66 |
-
|
67 |
-
<!-- There MUST NOT be more than one statement per line. -->
|
68 |
-
<rule ref="Generic.Formatting.DisallowMultipleStatements"/>
|
69 |
-
|
70 |
-
<!-- Code MUST use an indent of 2 spaces, and MUST NOT use tabs for indenting. -->
|
71 |
-
<rule ref="Generic.WhiteSpace.ScopeIndent">
|
72 |
-
<properties>
|
73 |
-
<property name="indent" value="2" />
|
74 |
-
</properties>
|
75 |
-
</rule>
|
76 |
-
<rule ref="Generic.WhiteSpace.DisallowTabIndent"/>
|
77 |
-
|
78 |
-
<!-- PHP keywords MUST be in lower case. -->
|
79 |
-
<rule ref="Generic.PHP.LowerCaseKeyword"/>
|
80 |
-
|
81 |
-
<!-- The PHP constants true, false, and null MUST be in lower case. -->
|
82 |
-
<rule ref="Generic.PHP.LowerCaseConstant"/>
|
83 |
-
|
84 |
-
<!-- The extends and implements keywords MUST be declared on the same line as the class name.
|
85 |
-
The opening brace for the class go MUST go on its own line; the closing brace for the class MUST go on the next line after the body.
|
86 |
-
Lists of implements MAY be split across multiple lines, where each subsequent line is indented once. When doing so, the first item in the list MUST be on the next line, and there MUST be only one interface per line. -->
|
87 |
-
<rule ref="PSR2.Classes.ClassDeclaration" />
|
88 |
-
|
89 |
-
|
90 |
-
<!-- Visibility MUST be declared on all properties.
|
91 |
-
The var keyword MUST NOT be used to declare a property.
|
92 |
-
There MUST NOT be more than one property declared per statement.
|
93 |
-
Property names SHOULD NOT be prefixed with a single underscore to indicate protected or private visibility. -->
|
94 |
-
<rule ref="PSR2.Classes.PropertyDeclaration" />
|
95 |
-
<rule ref="PSR2.Classes.PropertyDeclaration.Underscore" />
|
96 |
-
|
97 |
-
<!-- Visibility MUST be declared on all methods. -->
|
98 |
-
<rule ref="Squiz.Scope.MethodScope"/>
|
99 |
-
<rule ref="Squiz.WhiteSpace.ScopeKeywordSpacing"/>
|
100 |
-
|
101 |
-
|
102 |
-
<!-- Method names MUST NOT be declared with a space after the method name. The opening brace MUST go on its own line, and the closing brace MUST go on the next line following the body. There MUST NOT be a space after the opening parenthesis, and there MUST NOT be a space before the closing parenthesis. -->
|
103 |
-
<rule ref="Squiz.Functions.FunctionDeclaration"/>
|
104 |
-
<rule ref="Squiz.Functions.LowercaseFunctionKeywords"/>
|
105 |
-
|
106 |
-
<!-- In the argument list, there MUST NOT be a space before each comma, and there MUST be one space after each comma. -->
|
107 |
-
<rule ref="Squiz.Functions.FunctionDeclarationArgumentSpacing">
|
108 |
-
<properties>
|
109 |
-
<property name="equalsSpacing" value="1"/>
|
110 |
-
</properties>
|
111 |
-
</rule>
|
112 |
-
|
113 |
-
<!-- Method arguments with default values MUST go at the end of the argument list. -->
|
114 |
-
<rule ref="PEAR.Functions.ValidDefaultValue"/>
|
115 |
-
|
116 |
-
<!-- Argument lists MAY be split across multiple lines, where each subsequent line is indented once. When doing so, the first item in the list MUST be on the next line, and there MUST be only one argument per line. When the argument list is split across multiple lines, the closing parenthesis and opening brace MUST be placed together on their own line with one space between them. -->
|
117 |
-
<rule ref="Squiz.Functions.MultiLineFunctionDeclaration"/>
|
118 |
-
|
119 |
-
<!-- When present, the abstract and final declarations MUST precede the visibility declaration.
|
120 |
-
When present, the static declaration MUST come after the visibility declaration. -->
|
121 |
-
<!-- Method names SHOULD NOT be prefixed with a single underscore to indicate protected or private visibility. -->
|
122 |
-
<rule ref="PSR2.Methods.MethodDeclaration" />
|
123 |
-
|
124 |
-
<!-- When making a method or function call, there MUST NOT be a space between the method or function name and the opening parenthesis, there MUST NOT be a space after the opening parenthesis, and there MUST NOT be a space before the closing parenthesis. In the argument list, there MUST NOT be a space before each comma, and there MUST be one space after each comma.
|
125 |
-
Argument lists MAY be split across multiple lines, where each subsequent line is indented once. When doing so, the first item in the list MUST be on the next line, and there MUST be only one argument per line. -->
|
126 |
-
<rule ref="Generic.Functions.FunctionCallArgumentSpacing"/>
|
127 |
-
<rule ref="PEAR.Functions.FunctionCallSignature">
|
128 |
-
<properties>
|
129 |
-
<property name="allowMultipleArguments" value="false"/>
|
130 |
-
</properties>
|
131 |
-
</rule>
|
132 |
-
|
133 |
-
<!-- The general style rules for control structures are as follows:
|
134 |
-
There MUST be one space after the control structure keyword
|
135 |
-
There MUST NOT be a space after the opening parenthesis
|
136 |
-
There MUST NOT be a space before the closing parenthesis
|
137 |
-
There MUST be one space between the closing parenthesis and the opening brace
|
138 |
-
The structure body MUST be indented once
|
139 |
-
The closing brace MUST be on the next line after the body -->
|
140 |
-
<rule ref="Squiz.ControlStructures.ControlSignature">
|
141 |
-
<properties>
|
142 |
-
<property name="ignoreComments" value="true"/>
|
143 |
-
</properties>
|
144 |
-
</rule>
|
145 |
-
<rule ref="Squiz.WhiteSpace.ScopeClosingBrace"/>
|
146 |
-
<rule ref="Squiz.ControlStructures.ForEachLoopDeclaration"/>
|
147 |
-
<rule ref="Squiz.ControlStructures.ForLoopDeclaration"/>
|
148 |
-
<rule ref="Squiz.ControlStructures.LowercaseDeclaration"/>
|
149 |
-
|
150 |
-
<!-- The body of each structure MUST be enclosed by braces. This standardizes how the structures look, and reduces the likelihood of introducing errors as new lines get added to the body. -->
|
151 |
-
<rule ref="Generic.ControlStructures.InlineControlStructure"/>
|
152 |
-
|
153 |
-
<!-- The case statement MUST be indented once from switch, and the break keyword (or other terminating keyword) MUST be indented at the same level as the case body. There MUST be a comment such as // no break when fall-through is intentional in a non-empty case body. -->
|
154 |
-
<rule ref="PSR2.ControlStructures.SwitchDeclaration" >
|
155 |
-
<properties>
|
156 |
-
<property name="indent" value="2" />
|
157 |
-
</properties>
|
158 |
-
</rule>
|
159 |
-
</ruleset>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/google/auth/CHANGELOG.md
CHANGED
@@ -1,3 +1,161 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
## 0.4.0 (23/04/2015)
|
2 |
|
3 |
### Changes
|
@@ -5,4 +163,5 @@
|
|
5 |
* Export callback function to update auth metadata ([@stanley-cheung][])
|
6 |
* Adds an implementation of User Refresh Token auth ([@stanley-cheung][])
|
7 |
|
|
|
8 |
[@stanley-cheung]: https://github.com/stanley-cheung
|
1 |
+
## 1.13.0 (9/18/2020)
|
2 |
+
|
3 |
+
* [feat]: Add service account identity support to GCECredentials (#304)
|
4 |
+
|
5 |
+
## 1.12.0 (8/31/2020)
|
6 |
+
|
7 |
+
* [feat]: Add QuotaProject option to getMiddleware (#296)
|
8 |
+
* [feat]: Add caching for calls to GCECredentials::onGce (#301)
|
9 |
+
* [feat]: Add updateMetadata function to token cache (#298)
|
10 |
+
* [fix]: Use quota_project_id instead of quota_project (#299)
|
11 |
+
|
12 |
+
## 1.11.1 (7/27/2020)
|
13 |
+
|
14 |
+
* [fix]: catch ConnectException in GCE check (#294)
|
15 |
+
* [docs]: Adds [reference docs](https://googleapis.github.io/google-auth-library-php/master)
|
16 |
+
|
17 |
+
## 1.11.0 (7/22/2020)
|
18 |
+
|
19 |
+
* [feat]: Check cache expiration (#291)
|
20 |
+
* [fix]: OAuth2 cache key when audience is set (#291)
|
21 |
+
|
22 |
+
## 1.10.0 (7/8/2020)
|
23 |
+
|
24 |
+
* [feat]: Add support for Guzzle 7 (#256)
|
25 |
+
* [fix]: Remove SDK warning (#283)
|
26 |
+
* [chore]: Switch to github pages deploy action (#284)
|
27 |
+
|
28 |
+
## 1.9.0 (5/14/2020)
|
29 |
+
|
30 |
+
* [feat] Add quotaProject param for extensible client options support (#277)
|
31 |
+
* [feat] Add signingKeyId param for jwt signing (#270)
|
32 |
+
* [docs] Misc documentation improvements (#268, #278, #273)
|
33 |
+
* [chore] Switch from Travis to Github Actions (#273)
|
34 |
+
|
35 |
+
## 1.8.0 (3/26/2020)
|
36 |
+
|
37 |
+
* [feat] Add option to throw exception in AccessToken::verify(). (#265)
|
38 |
+
* [feat] Add support for x-goog-user-project. (#254)
|
39 |
+
* [feat] Add option to specify issuer in AccessToken::verify(). (#267)
|
40 |
+
* [feat] Add getProjectId to credentials types where project IDs can be determined. (#230)
|
41 |
+
|
42 |
+
## 1.7.1 (02/12/2020)
|
43 |
+
|
44 |
+
* [fix] Invalid character in iap cert cache key (#263)
|
45 |
+
* [fix] Typo in exception for package name (#262)
|
46 |
+
|
47 |
+
## 1.7.0 (02/11/2020)
|
48 |
+
|
49 |
+
* [feat] Add ID token to auth token methods. (#248)
|
50 |
+
* [feat] Add support for ES256 in `AccessToken::verify`. (#255)
|
51 |
+
* [fix] Let namespace match the file structure. (#258)
|
52 |
+
* [fix] Construct RuntimeException. (#257)
|
53 |
+
* [tests] Update tests for PHP 7.4 compatibility. (#253)
|
54 |
+
* [chore] Add a couple more things to `.gitattributes`. (#252)
|
55 |
+
|
56 |
+
## 1.6.1 (10/29/2019)
|
57 |
+
|
58 |
+
* [fix] Handle DST correctly for cache item expirations. (#246)
|
59 |
+
|
60 |
+
## 1.6.0 (10/01/2019)
|
61 |
+
|
62 |
+
* [feat] Add utility for verifying and revoking access tokens. (#243)
|
63 |
+
* [docs] Fix README console terminology. (#242)
|
64 |
+
* [feat] Support custom scopes with GCECredentials. (#239)
|
65 |
+
* [fix] Fix phpseclib existence check. (#237)
|
66 |
+
|
67 |
+
## 1.5.2 (07/22/2019)
|
68 |
+
|
69 |
+
* [fix] Move loadItems call out of `SysVCacheItemPool` constructor. (#229)
|
70 |
+
* [fix] Add `Metadata-Flavor` header to initial GCE metadata call. (#232)
|
71 |
+
|
72 |
+
## 1.5.1 (04/16/2019)
|
73 |
+
|
74 |
+
* [fix] Moved `getClientName()` from `Google\Auth\FetchAuthTokenInterface`
|
75 |
+
to `Google\Auth\SignBlobInterface`, and removed `getClientName()` from
|
76 |
+
`InsecureCredentials` and `UserRefreshCredentials`. (#223)
|
77 |
+
|
78 |
+
## 1.5.0 (04/15/2019)
|
79 |
+
|
80 |
+
### Changes
|
81 |
+
|
82 |
+
* Add support for signing strings with a Credentials instance. (#221)
|
83 |
+
* [Docs] Describe the arrays returned by fetchAuthToken. (#216)
|
84 |
+
* [Testing] Fix failing tests (#217)
|
85 |
+
* Update GitHub issue templates (#214, #213)
|
86 |
+
|
87 |
+
## 1.4.0 (09/17/2018)
|
88 |
+
|
89 |
+
### Changes
|
90 |
+
|
91 |
+
* Add support for insecure credentials (#208)
|
92 |
+
|
93 |
+
## 1.3.3 (08/27/2018)
|
94 |
+
|
95 |
+
### Changes
|
96 |
+
|
97 |
+
* Add retry and increase timeout for GCE credentials (#195)
|
98 |
+
* [Docs] Fix spelling (#204)
|
99 |
+
* Update token url (#206)
|
100 |
+
|
101 |
+
## 1.3.2 (07/23/2018)
|
102 |
+
|
103 |
+
### Changes
|
104 |
+
|
105 |
+
* Only emits a warning for gcloud credentials (#202)
|
106 |
+
|
107 |
+
## 1.3.1 (07/19/2018)
|
108 |
+
|
109 |
+
### Changes
|
110 |
+
|
111 |
+
* Added a warning for 3 legged OAuth credentials (#199)
|
112 |
+
* [Code cleanup] Removed useless else after return (#193)
|
113 |
+
|
114 |
+
## 1.3.0 (06/04/2018)
|
115 |
+
|
116 |
+
### Changes
|
117 |
+
|
118 |
+
* Fixes usage of deprecated env var for GAE Flex (#189)
|
119 |
+
* fix - guzzlehttp/psr7 dependency version definition (#190)
|
120 |
+
* Added SystemV shared memory based CacheItemPool (#191)
|
121 |
+
|
122 |
+
## 1.2.1 (24/01/2018)
|
123 |
+
|
124 |
+
### Changes
|
125 |
+
|
126 |
+
* Fixes array merging bug in Guzzle5HttpHandler (#186)
|
127 |
+
* Fixes constructor argument bug in Subscriber & Middleware (#184)
|
128 |
+
|
129 |
+
## 1.2.0 (6/12/2017)
|
130 |
+
|
131 |
+
### Changes
|
132 |
+
|
133 |
+
* Adds async method to HTTP handlers (#176)
|
134 |
+
* Misc bug fixes and improvements (#177, #175, #178)
|
135 |
+
|
136 |
+
## 1.1.0 (10/10/2017)
|
137 |
+
|
138 |
+
### Changes
|
139 |
+
|
140 |
+
* Supports additional claims in JWT tokens (#171)
|
141 |
+
* Adds makeHttpClient for creating authorized Guzzle clients (#162)
|
142 |
+
* Misc bug fixes/improvements (#168, #161, #167, #170, #143)
|
143 |
+
|
144 |
+
## 1.0.1 (31/07/2017)
|
145 |
+
|
146 |
+
### Changes
|
147 |
+
|
148 |
+
* Adds support for Firebase 5.0 (#159)
|
149 |
+
|
150 |
+
## 1.0.0 (12/06/2017)
|
151 |
+
|
152 |
+
### Changes
|
153 |
+
|
154 |
+
* Adds hashing and shortening to enforce max key length ([@bshaffer])
|
155 |
+
* Fix for better PSR-6 compliance - verifies a hit before getting the cache item ([@bshaffer])
|
156 |
+
* README fixes ([@bshaffer])
|
157 |
+
* Change authorization header key to lowercase ([@stanley-cheung])
|
158 |
+
|
159 |
## 0.4.0 (23/04/2015)
|
160 |
|
161 |
### Changes
|
163 |
* Export callback function to update auth metadata ([@stanley-cheung][])
|
164 |
* Adds an implementation of User Refresh Token auth ([@stanley-cheung][])
|
165 |
|
166 |
+
[@bshaffer]: https://github.com/bshaffer
|
167 |
[@stanley-cheung]: https://github.com/stanley-cheung
|
vendor/google/auth/CODE_OF_CONDUCT.md
ADDED
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Contributor Code of Conduct
|
2 |
+
|
3 |
+
As contributors and maintainers of this project,
|
4 |
+
and in the interest of fostering an open and welcoming community,
|
5 |
+
we pledge to respect all people who contribute through reporting issues,
|
6 |
+
posting feature requests, updating documentation,
|
7 |
+
submitting pull requests or patches, and other activities.
|
8 |
+
|
9 |
+
We are committed to making participation in this project
|
10 |
+
a harassment-free experience for everyone,
|
11 |
+
regardless of level of experience, gender, gender identity and expression,
|
12 |
+
sexual orientation, disability, personal appearance,
|
13 |
+
body size, race, ethnicity, age, religion, or nationality.
|
14 |
+
|
15 |
+
Examples of unacceptable behavior by participants include:
|
16 |
+
|
17 |
+
* The use of sexualized language or imagery
|
18 |
+
* Personal attacks
|
19 |
+
* Trolling or insulting/derogatory comments
|
20 |
+
* Public or private harassment
|
21 |
+
* Publishing other's private information,
|
22 |
+
such as physical or electronic
|
23 |
+
addresses, without explicit permission
|
24 |
+
* Other unethical or unprofessional conduct.
|
25 |
+
|
26 |
+
Project maintainers have the right and responsibility to remove, edit, or reject
|
27 |
+
comments, commits, code, wiki edits, issues, and other contributions
|
28 |
+
that are not aligned to this Code of Conduct.
|
29 |
+
By adopting this Code of Conduct,
|
30 |
+
project maintainers commit themselves to fairly and consistently
|
31 |
+
applying these principles to every aspect of managing this project.
|
32 |
+
Project maintainers who do not follow or enforce the Code of Conduct
|
33 |
+
may be permanently removed from the project team.
|
34 |
+
|
35 |
+
This code of conduct applies both within project spaces and in public spaces
|
36 |
+
when an individual is representing the project or its community.
|
37 |
+
|
38 |
+
Instances of abusive, harassing, or otherwise unacceptable behavior
|
39 |
+
may be reported by opening an issue
|
40 |
+
or contacting one or more of the project maintainers.
|
41 |
+
|
42 |
+
This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.2.0,
|
43 |
+
available at [http://contributor-covenant.org/version/1/2/0/](http://contributor-covenant.org/version/1/2/0/)
|
vendor/google/auth/CONTRIBUTING.md
DELETED
@@ -1,73 +0,0 @@
|
|
1 |
-
# How to become a contributor and submit your own code
|
2 |
-
|
3 |
-
## Contributor License Agreements
|
4 |
-
|
5 |
-
We'd love to accept your sample apps and patches! Before we can take them, we
|
6 |
-
have to jump a couple of legal hurdles.
|
7 |
-
|
8 |
-
Please fill out either the individual or corporate Contributor License Agreement
|
9 |
-
(CLA).
|
10 |
-
|
11 |
-
* If you are an individual writing original source code and you're sure you
|
12 |
-
own the intellectual property, then you'll need to sign an [individual CLA]
|
13 |
-
(http://code.google.com/legal/individual-cla-v1.0.html).
|
14 |
-
* If you work for a company that wants to allow you to contribute your work,
|
15 |
-
then you'll need to sign a [corporate CLA]
|
16 |
-
(http://code.google.com/legal/corporate-cla-v1.0.html).
|
17 |
-
|
18 |
-
Follow either of the two links above to access the appropriate CLA and
|
19 |
-
instructions for how to sign and return it. Once we receive it, we'll be able to
|
20 |
-
accept your pull requests.
|
21 |
-
|
22 |
-
## Issue reporting
|
23 |
-
|
24 |
-
* Check that the issue has not already been reported.
|
25 |
-
* Check that the issue has not already been fixed in the latest code
|
26 |
-
(a.k.a. `master`).
|
27 |
-
* Be clear, concise and precise in your description of the problem.
|
28 |
-
* Open an issue with a descriptive title and a summary in grammatically correct,
|
29 |
-
complete sentences.
|
30 |
-
* Include any relevant code to the issue summary.
|
31 |
-
|
32 |
-
## Pull requests
|
33 |
-
|
34 |
-
* Read [how to properly contribute to open source projects on Github][2].
|
35 |
-
* Fork the project.
|
36 |
-
* Use a topic/feature branch to easily amend a pull request later, if necessary.
|
37 |
-
* Write [good commit messages][3].
|
38 |
-
* Use the same coding conventions as the rest of the project.
|
39 |
-
* Commit and push until you are happy with your contribution.
|
40 |
-
* Make sure to add tests for it. This is important so I don't break it
|
41 |
-
in a future version unintentionally.
|
42 |
-
* Add an entry to the [Changelog](CHANGELOG.md) accordingly. See [changelog entry format](#changelog-entry-format).
|
43 |
-
* Please try not to mess with the Rakefile, version, or history. If you want to
|
44 |
-
have your own version, or is otherwise necessary, that is fine, but please
|
45 |
-
isolate to its own commit so I can cherry-pick around it.
|
46 |
-
* Make sure the test suite is passing and the code you wrote doesn't produce
|
47 |
-
phpunit or phplint offenses.
|
48 |
-
* [Squash related commits together][5].
|
49 |
-
* Open a [pull request][4] that relates to *only* one subject with a clear title
|
50 |
-
and description in grammatically correct, complete sentences.
|
51 |
-
|
52 |
-
### Changelog entry format
|
53 |
-
|
54 |
-
Here are a few examples:
|
55 |
-
|
56 |
-
```
|
57 |
-
* ADC Support for User Refresh Tokens (@tbetbetbe[])
|
58 |
-
* [#16](https://github.com/google/google-auth-library-php/issues/16): ADC Support for User Refresh Tokens ([@tbetbetbe][])
|
59 |
-
```
|
60 |
-
|
61 |
-
* Mark it up in [Markdown syntax][6].
|
62 |
-
* The entry line should start with `* ` (an asterisk and a space).
|
63 |
-
* If the change has a related GitHub issue (e.g. a bug fix for a reported issue), put a link to the issue as `[#16](https://github.com/google/google-auth-library-php/issues/16): `.
|
64 |
-
* Describe the brief of the change. The sentence should end with a punctuation.
|
65 |
-
* At the end of the entry, add an implicit link to your GitHub user page as `([@username][])`.
|
66 |
-
* If this is your first contribution to google-auth-library-php project, add a link definition for the implicit link to the bottom of the changelog as `[@username]: https://github.com/username`.
|
67 |
-
|
68 |
-
[1]: https://github.com/google/google-auth-php-library/issues
|
69 |
-
[2]: http://gun.io/blog/how-to-github-fork-branch-and-pull-request
|
70 |
-
[3]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
|
71 |
-
[4]: https://help.github.com/articles/using-pull-requests
|
72 |
-
[5]: http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html
|
73 |
-
[6]: http://daringfireball.net/projects/markdown/syntax
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/google/auth/README.md
CHANGED
@@ -2,6 +2,7 @@
|
|
2 |
|
3 |
<dl>
|
4 |
<dt>Homepage</dt><dd><a href="http://www.github.com/google/google-auth-library-php">http://www.github.com/google/google-auth-library-php</a></dd>
|
|
|
5 |
<dt>Authors</dt>
|
6 |
<dd><a href="mailto:temiola@google.com">Tim Emiola</a></dd>
|
7 |
<dd><a href="mailto:stanleycheung@google.com">Stanley Cheung</a></dd>
|
@@ -47,8 +48,8 @@ you're building an application that uses Google Compute Engine.
|
|
47 |
#### Download your Service Account Credentials JSON file
|
48 |
|
49 |
To use `Application Default Credentials`, You first need to download a set of
|
50 |
-
JSON credentials for your project. Go to **APIs &
|
51 |
-
the [Google Developers Console]
|
52 |
**Service account** from the **Add credentials** dropdown.
|
53 |
|
54 |
> This file is your *only copy* of these credentials. It should never be
|
@@ -68,7 +69,7 @@ putenv('GOOGLE_APPLICATION_CREDENTIALS=/path/to/my/credentials.json');
|
|
68 |
|
69 |
Before making your API call, you must be sure the API you're calling has been
|
70 |
enabled. Go to **APIs & Auth** > **APIs** in the
|
71 |
-
[Google Developers Console]
|
72 |
call. For the example below, you must enable the `Drive API`.
|
73 |
|
74 |
#### Call the APIs
|
@@ -95,7 +96,7 @@ $stack->push($middleware);
|
|
95 |
// create the HTTP client
|
96 |
$client = new Client([
|
97 |
'handler' => $stack,
|
98 |
-
'
|
99 |
'auth' => 'google_auth' // authorize all requests
|
100 |
]);
|
101 |
|
@@ -106,18 +107,99 @@ $response = $client->get('drive/v2/files');
|
|
106 |
print_r((string) $response->getBody());
|
107 |
```
|
108 |
|
109 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
<dl>
|
4 |
<dt>Homepage</dt><dd><a href="http://www.github.com/google/google-auth-library-php">http://www.github.com/google/google-auth-library-php</a></dd>
|
5 |
+
<dt>Reference Docs</dt><dd><a href="https://googleapis.github.io/google-auth-library-php/master/">https://googleapis.github.io/google-auth-library-php/master/</a></dd>
|
6 |
<dt>Authors</dt>
|
7 |
<dd><a href="mailto:temiola@google.com">Tim Emiola</a></dd>
|
8 |
<dd><a href="mailto:stanleycheung@google.com">Stanley Cheung</a></dd>
|
48 |
#### Download your Service Account Credentials JSON file
|
49 |
|
50 |
To use `Application Default Credentials`, You first need to download a set of
|
51 |
+
JSON credentials for your project. Go to **APIs & Services** > **Credentials** in
|
52 |
+
the [Google Developers Console][developer console] and select
|
53 |
**Service account** from the **Add credentials** dropdown.
|
54 |
|
55 |
> This file is your *only copy* of these credentials. It should never be
|
69 |
|
70 |
Before making your API call, you must be sure the API you're calling has been
|
71 |
enabled. Go to **APIs & Auth** > **APIs** in the
|
72 |
+
[Google Developers Console][developer console] and enable the APIs you'd like to
|
73 |
call. For the example below, you must enable the `Drive API`.
|
74 |
|
75 |
#### Call the APIs
|
96 |
// create the HTTP client
|
97 |
$client = new Client([
|
98 |
'handler' => $stack,
|
99 |
+
'base_uri' => 'https://www.googleapis.com',
|
100 |
'auth' => 'google_auth' // authorize all requests
|
101 |
]);
|
102 |
|
107 |
print_r((string) $response->getBody());
|
108 |
```
|
109 |
|
110 |
+
##### Guzzle 5 Compatibility
|
111 |
+
|
112 |
+
If you are using [Guzzle 5][Guzzle 5], replace the `create middleware` and
|
113 |
+
`create the HTTP Client` steps with the following:
|
114 |
+
|
115 |
+
```php
|
116 |
+
// create the HTTP client
|
117 |
+
$client = new Client([
|
118 |
+
'base_url' => 'https://www.googleapis.com',
|
119 |
+
'auth' => 'google_auth' // authorize all requests
|
120 |
+
]);
|
121 |
+
|
122 |
+
// create subscriber
|
123 |
+
$subscriber = ApplicationDefaultCredentials::getSubscriber($scopes);
|
124 |
+
$client->getEmitter()->attach($subscriber);
|
125 |
+
```
|
126 |
+
|
127 |
+
#### Call using an ID Token
|
128 |
+
If your application is running behind Cloud Run, or using Cloud Identity-Aware
|
129 |
+
Proxy (IAP), you will need to fetch an ID token to access your application. For
|
130 |
+
this, use the static method `getIdTokenMiddleware` on
|
131 |
+
`ApplicationDefaultCredentials`.
|
132 |
+
|
133 |
+
```php
|
134 |
+
use Google\Auth\ApplicationDefaultCredentials;
|
135 |
+
use GuzzleHttp\Client;
|
136 |
+
use GuzzleHttp\HandlerStack;
|
137 |
+
|
138 |
+
// specify the path to your application credentials
|
139 |
+
putenv('GOOGLE_APPLICATION_CREDENTIALS=/path/to/my/credentials.json');
|
140 |
+
|
141 |
+
// Provide the ID token audience. This can be a Client ID associated with an IAP application,
|
142 |
+
// Or the URL associated with a CloudRun App
|
143 |
+
// $targetAudience = 'IAP_CLIENT_ID.apps.googleusercontent.com';
|
144 |
+
// $targetAudience = 'https://service-1234-uc.a.run.app';
|
145 |
+
$targetAudience = 'YOUR_ID_TOKEN_AUDIENCE
|