@resolveio/server-lib 1.0.0-rc3 → 1.0.0-rc4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/collections/active-subscription.collection.js +2 -1
  2. package/collections/app-status.collection.js +2 -1
  3. package/collections/app-version.collection.js +2 -1
  4. package/collections/counter.collection.js +2 -1
  5. package/collections/cron-job-history.collection.js +2 -1
  6. package/collections/cron-job.collection.js +2 -1
  7. package/collections/file.collection.js +2 -1
  8. package/collections/flag.collection.js +2 -1
  9. package/collections/log.collection.js +2 -1
  10. package/collections/logged-in-users.collection.js +2 -1
  11. package/collections/method-call.collection.js +2 -1
  12. package/collections/method-response.collection.js +2 -1
  13. package/collections/queue-flag.collection.js +2 -1
  14. package/collections/queue-method.collection.js +2 -1
  15. package/collections/queue-response.collection.js +2 -1
  16. package/collections/support-ticket.collection.js +2 -1
  17. package/collections/user.collection.js +2 -1
  18. package/cron/cron.js +2 -1
  19. package/fixtures/cron-jobs.js +2 -1
  20. package/fixtures/init.js +2 -1
  21. package/http/auth.js +2 -1
  22. package/http/health.js +2 -1
  23. package/index.js +2 -1
  24. package/managers/cron.manager.js +2 -1
  25. package/managers/method.manager.js +2 -1
  26. package/managers/queue-method.manager.js +2 -1
  27. package/managers/subscription.manager.js +2 -1
  28. package/managers/support.manager.js +2 -1
  29. package/methods/accounts.js +2 -1
  30. package/methods/aws.js +2 -1
  31. package/methods/cloudconvert.js +2 -1
  32. package/methods/collections.js +2 -1
  33. package/methods/counters.js +2 -1
  34. package/methods/cron-jobs.js +2 -1
  35. package/methods/flags.js +2 -1
  36. package/methods/logs.js +2 -1
  37. package/methods/pdf.js +2 -1
  38. package/models/active-subscription.model.js +2 -1
  39. package/models/app-status.model.js +2 -1
  40. package/models/app-version.model.js +2 -1
  41. package/models/collection-document.model.js +2 -1
  42. package/models/counter.model.js +2 -1
  43. package/models/cron-job-history.model.js +2 -1
  44. package/models/cron-job.model.js +2 -1
  45. package/models/dialog.model.js +2 -1
  46. package/models/file.model.js +2 -1
  47. package/models/flag.model.js +2 -1
  48. package/models/log.model.js +2 -1
  49. package/models/logged-in-users.model.js +2 -1
  50. package/models/method-call.model.js +2 -1
  51. package/models/method-response.model.js +2 -1
  52. package/models/method.model.js +2 -1
  53. package/models/pagination.model.js +2 -1
  54. package/models/permission.model.js +2 -1
  55. package/models/queue-method.model.js +2 -1
  56. package/models/queue-response.model.js +2 -1
  57. package/models/select-data-label.model.js +2 -1
  58. package/models/server-response.model.js +2 -1
  59. package/models/subscription.model.js +2 -1
  60. package/models/support-method.model.js +2 -1
  61. package/models/support-ticket.model.js +2 -1
  62. package/models/user.model.js +2 -1
  63. package/package.json +2 -1
  64. package/publications/app-status.js +2 -1
  65. package/publications/app-version.js +2 -1
  66. package/publications/cron-jobs.js +2 -1
  67. package/publications/files.js +2 -1
  68. package/publications/flags.js +2 -1
  69. package/publications/logs.js +2 -1
  70. package/publications/method-calls.js +2 -1
  71. package/publications/method-responses.js +2 -1
  72. package/publications/super-admin.js +2 -1
  73. package/publications/support-tickets.js +2 -1
  74. package/server-app.js +2 -1
  75. package/support-methods/aws.js +2 -1
  76. package/support-methods/collections.js +2 -1
  77. package/support-methods/counters.js +2 -1
  78. package/support-methods/support.js +2 -1
  79. package/util/common.js +2 -1
@@ -1 +1,2 @@
1
- "use strict";var __awaiter=this&&this.__awaiter||function(s,i,u,a){return new(u||(u=Promise))(function(e,n){function r(e){try{o(a.next(e))}catch(e){n(e)}}function t(e){try{o(a.throw(e))}catch(e){n(e)}}function o(n){n.done?e(n.value):new u(function(e){e(n.value)}).then(r,t)}o((a=a.apply(s,i||[])).next())})},__generator=this&&this.__generator||function(r,t){var o,s,i,e,u={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return e={next:n(0),throw:n(1),return:n(2)},"function"==typeof Symbol&&(e[Symbol.iterator]=function(){return this}),e;function n(n){return function(e){return function(n){if(o)throw new TypeError("Generator is already executing.");for(;u;)try{if(o=1,s&&(i=2&n[0]?s.return:n[0]?s.throw||((i=s.return)&&i.call(s),0):s.next)&&!(i=i.call(s,n[1])).done)return i;switch(s=0,i&&(n=[2&n[0],i.value]),n[0]){case 0:case 1:i=n;break;case 4:return u.label++,{value:n[1],done:!1};case 5:u.label++,s=n[1],n=[0];continue;case 7:n=u.ops.pop(),u.trys.pop();continue;default:if(!(i=0<(i=u.trys).length&&i[i.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!i||n[1]>i[0]&&n[1]<i[3])){u.label=n[1];break}if(6===n[0]&&u.label<i[1]){u.label=i[1],i=n;break}if(i&&u.label<i[2]){u.label=i[2],u.ops.push(n);break}i[2]&&u.ops.pop(),u.trys.pop();continue}n=t.call(r,u)}catch(e){n=[6,e],s=0}finally{o=i=0}if(5&n[0])throw n[1];return{value:n[0]?n[1]:void 0,done:!0}}([n,e])}}};Object.defineProperty(exports,"__esModule",{value:!0});var simpl_schema_1=require("simpl-schema"),mongoose_1=require("mongoose"),user_collection_1=require("../collections/user.collection"),handlebars=require("handlebars"),jwt=require("jsonwebtoken"),logged_in_users_collection_1=require("../collections/logged-in-users.collection"),queue_response_collection_1=require("../collections/queue-response.collection"),index_1=require("../index");function loadAccountMethods(e){e.methods({setWSAppVersion:{skipQueue:!0,check:new simpl_schema_1.default({version:Number}),function:function(e){return logged_in_users_collection_1.LoggedInUsers.updateOne({id_ws:this.id_ws},{$set:{app_version:e}}).exec()}},reloadWS:{skipQueue:!0,check:new simpl_schema_1.default({id_ws:String}),function:function(r){var t=this;return new Promise(function(n,e){return __awaiter(t,void 0,void 0,function(){return __generator(this,function(e){return queue_response_collection_1.QueueResponses.create({_id:mongoose_1.Types.ObjectId().toHexString(),__v:0,method:"reloadWSCommand",method_data:[],id_ws:r,messageId:0,id_user:this.id_user,user:this.user,response:{messageId:0,hasError:!1,data:"reloadWSCommand"}}).then(function(e){}),n(),[2]})})})}},reconnectWS:{skipQueue:!0,check:new simpl_schema_1.default({id_ws:String}),function:function(r){var t=this;return new Promise(function(n,e){return __awaiter(t,void 0,void 0,function(){return __generator(this,function(e){return queue_response_collection_1.QueueResponses.create({_id:mongoose_1.Types.ObjectId().toHexString(),__v:0,method:"reconnectWSCommand",method_data:[],id_ws:r,messageId:0,id_user:this.id_user,user:this.user,response:{messageId:0,hasError:!1,data:"reconnectWSCommand"}}),n(),[2]})})})}},disconnectWS:{skipQueue:!0,check:new simpl_schema_1.default({id_ws:String}),function:function(r){var t=this;return new Promise(function(n,e){return __awaiter(t,void 0,void 0,function(){return __generator(this,function(e){return queue_response_collection_1.QueueResponses.create({_id:mongoose_1.Types.ObjectId().toHexString(),__v:0,method:"disconnectWSCommand",method_data:[],id_ws:r,messageId:0,id_user:this.id_user,user:this.user,response:{messageId:0,hasError:!1,data:"disconnectWSCommand"}}),n(),[2]})})})}},createUserAndEmailEnrollment:{check:new simpl_schema_1.default({data:{type:user_collection_1.Users.simplschema}}),function:function(r){var e=this;return new Promise(function(s,i){return __awaiter(e,void 0,void 0,function(){var n,t,o=this;return __generator(this,function(e){switch(e.label){case 0:return n=mongoose_1.Types.ObjectId().toHexString(),[4,user_collection_1.Users.create({_id:n,__v:0,username:r.username,email:r.email,fullname:r.fullname,roles:[],active:!0,readonly:!1,services:{enrollment:jwt.sign({id_user:n},this.serverConfig.JWT_SECRET,{expiresIn:2592e5})},phonenumber:r.phonenumber})];case 1:return(t=e.sent()).setPassword(randomString(20,"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"),function(e,n){t.save();var r={fullname:t.fullname,user:o.user,url:o.serverConfig.ROOT_URL+"/enroll-account?"+encodeURIComponent(o.serverConfig.SERVER_URL)+"&"+t.services.enrollment};o.readFile("email-templates/enrollment.html").then(function(e){var n=handlebars.compile(e);handlebars.registerHelper("equals",function(e,n){return e===n}),o.sendEmail(t.email,"ResolveIO ("+index_1.default.getClientName()+") - Enrollment Email","",n(r)),s(!0)},function(e){return i(e)})}),[2]}})})})}},resetUserPassword:{check:new simpl_schema_1.default({userId:{type:String}}),function:function(n){var e=this;return new Promise(function(s,i){return __awaiter(e,void 0,void 0,function(){var r,t,o=this;return __generator(this,function(e){switch(e.label){case 0:return[4,user_collection_1.Users.findOne({_id:n})];case 1:return(r=e.sent())&&(r.services.forgot_password=jwt.sign({id_user:n},this.serverConfig.JWT_SECRET),t={userToChangePassword:r.fullname,userWhoResetPassword:this.user,url:this.serverConfig.ROOT_URL+"/forgot-password?"+encodeURIComponent(this.serverConfig.SERVER_URL)+"&"+r.services.forgot_password},user_collection_1.Users.updateOne({_id:r._id},{$set:{services:r.services}}).exec(function(e,n){o.readFile("email-templates/forgot-password.html").then(function(e){var n=handlebars.compile(e);handlebars.registerHelper("equals",function(e,n){return e===n}),o.sendEmail(r.email,"ResolveIO ("+index_1.default.getClientName()+") - Forgot Password","",n(t)),s(!0)},function(e){return i(e)})})),[2]}})})})}}})}function randomString(e,n){for(var r="",t=e;0<t;--t)r+=n[Math.floor(Math.random()*n.length)];return r}exports.loadAccountMethods=loadAccountMethods;
1
+ "use strict";var __awaiter=this&&this.__awaiter||function(s,i,u,a){return new(u||(u=Promise))(function(e,n){function r(e){try{o(a.next(e))}catch(e){n(e)}}function t(e){try{o(a.throw(e))}catch(e){n(e)}}function o(n){n.done?e(n.value):new u(function(e){e(n.value)}).then(r,t)}o((a=a.apply(s,i||[])).next())})},__generator=this&&this.__generator||function(r,t){var o,s,i,e,u={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return e={next:n(0),throw:n(1),return:n(2)},"function"==typeof Symbol&&(e[Symbol.iterator]=function(){return this}),e;function n(n){return function(e){return function(n){if(o)throw new TypeError("Generator is already executing.");for(;u;)try{if(o=1,s&&(i=2&n[0]?s.return:n[0]?s.throw||((i=s.return)&&i.call(s),0):s.next)&&!(i=i.call(s,n[1])).done)return i;switch(s=0,i&&(n=[2&n[0],i.value]),n[0]){case 0:case 1:i=n;break;case 4:return u.label++,{value:n[1],done:!1};case 5:u.label++,s=n[1],n=[0];continue;case 7:n=u.ops.pop(),u.trys.pop();continue;default:if(!(i=0<(i=u.trys).length&&i[i.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!i||n[1]>i[0]&&n[1]<i[3])){u.label=n[1];break}if(6===n[0]&&u.label<i[1]){u.label=i[1],i=n;break}if(i&&u.label<i[2]){u.label=i[2],u.ops.push(n);break}i[2]&&u.ops.pop(),u.trys.pop();continue}n=t.call(r,u)}catch(e){n=[6,e],s=0}finally{o=i=0}if(5&n[0])throw n[1];return{value:n[0]?n[1]:void 0,done:!0}}([n,e])}}};Object.defineProperty(exports,"__esModule",{value:!0});var simpl_schema_1=require("simpl-schema"),mongoose_1=require("mongoose"),user_collection_1=require("../collections/user.collection"),handlebars=require("handlebars"),jwt=require("jsonwebtoken"),logged_in_users_collection_1=require("../collections/logged-in-users.collection"),queue_response_collection_1=require("../collections/queue-response.collection"),index_1=require("../index");function loadAccountMethods(e){e.methods({setWSAppVersion:{skipQueue:!0,check:new simpl_schema_1.default({version:Number}),function:function(e){return logged_in_users_collection_1.LoggedInUsers.updateOne({id_ws:this.id_ws},{$set:{app_version:e}}).exec()}},reloadWS:{skipQueue:!0,check:new simpl_schema_1.default({id_ws:String}),function:function(r){var t=this;return new Promise(function(n,e){return __awaiter(t,void 0,void 0,function(){return __generator(this,function(e){return queue_response_collection_1.QueueResponses.create({_id:mongoose_1.Types.ObjectId().toHexString(),__v:0,method:"reloadWSCommand",method_data:[],id_ws:r,messageId:0,id_user:this.id_user,user:this.user,response:{messageId:0,hasError:!1,data:"reloadWSCommand"}}).then(function(e){}),n(),[2]})})})}},reconnectWS:{skipQueue:!0,check:new simpl_schema_1.default({id_ws:String}),function:function(r){var t=this;return new Promise(function(n,e){return __awaiter(t,void 0,void 0,function(){return __generator(this,function(e){return queue_response_collection_1.QueueResponses.create({_id:mongoose_1.Types.ObjectId().toHexString(),__v:0,method:"reconnectWSCommand",method_data:[],id_ws:r,messageId:0,id_user:this.id_user,user:this.user,response:{messageId:0,hasError:!1,data:"reconnectWSCommand"}}),n(),[2]})})})}},disconnectWS:{skipQueue:!0,check:new simpl_schema_1.default({id_ws:String}),function:function(r){var t=this;return new Promise(function(n,e){return __awaiter(t,void 0,void 0,function(){return __generator(this,function(e){return queue_response_collection_1.QueueResponses.create({_id:mongoose_1.Types.ObjectId().toHexString(),__v:0,method:"disconnectWSCommand",method_data:[],id_ws:r,messageId:0,id_user:this.id_user,user:this.user,response:{messageId:0,hasError:!1,data:"disconnectWSCommand"}}),n(),[2]})})})}},createUserAndEmailEnrollment:{check:new simpl_schema_1.default({data:{type:user_collection_1.Users.simplschema}}),function:function(r){var e=this;return new Promise(function(s,i){return __awaiter(e,void 0,void 0,function(){var n,t,o=this;return __generator(this,function(e){switch(e.label){case 0:return n=mongoose_1.Types.ObjectId().toHexString(),[4,user_collection_1.Users.create({_id:n,__v:0,username:r.username,email:r.email,fullname:r.fullname,roles:[],active:!0,readonly:!1,services:{enrollment:jwt.sign({id_user:n},this.serverConfig.JWT_SECRET,{expiresIn:2592e5})},phonenumber:r.phonenumber})];case 1:return(t=e.sent()).setPassword(randomString(20,"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"),function(e,n){t.save();var r={fullname:t.fullname,user:o.user,url:o.serverConfig.ROOT_URL+"/enroll-account?"+encodeURIComponent(o.serverConfig.SERVER_URL)+"&"+t.services.enrollment};o.readFile("email-templates/enrollment.html").then(function(e){var n=handlebars.compile(e);handlebars.registerHelper("equals",function(e,n){return e===n}),o.sendEmail(t.email,"ResolveIO ("+index_1.default.getClientName()+") - Enrollment Email","",n(r)),s(!0)},function(e){return i(e)})}),[2]}})})})}},resetUserPassword:{check:new simpl_schema_1.default({userId:{type:String}}),function:function(n){var e=this;return new Promise(function(s,i){return __awaiter(e,void 0,void 0,function(){var r,t,o=this;return __generator(this,function(e){switch(e.label){case 0:return[4,user_collection_1.Users.findOne({_id:n})];case 1:return(r=e.sent())&&(r.services.forgot_password=jwt.sign({id_user:n},this.serverConfig.JWT_SECRET),t={userToChangePassword:r.fullname,userWhoResetPassword:this.user,url:this.serverConfig.ROOT_URL+"/forgot-password?"+encodeURIComponent(this.serverConfig.SERVER_URL)+"&"+r.services.forgot_password},user_collection_1.Users.updateOne({_id:r._id},{$set:{services:r.services}}).exec(function(e,n){o.readFile("email-templates/forgot-password.html").then(function(e){var n=handlebars.compile(e);handlebars.registerHelper("equals",function(e,n){return e===n}),o.sendEmail(r.email,"ResolveIO ("+index_1.default.getClientName()+") - Forgot Password","",n(t)),s(!0)},function(e){return i(e)})})),[2]}})})})}}})}function randomString(e,n){for(var r="",t=e;0<t;--t)r+=n[Math.floor(Math.random()*n.length)];return r}exports.loadAccountMethods=loadAccountMethods;
2
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZXRob2RzL2FjY291bnRzLnRzIl0sIm5hbWVzIjpbInNpbXBsX3NjaGVtYV8xIiwicmVxdWlyZSIsIm1vbmdvb3NlXzEiLCJ1c2VyX2NvbGxlY3Rpb25fMSIsImhhbmRsZWJhcnMiLCJqd3QiLCJsb2dnZWRfaW5fdXNlcnNfY29sbGVjdGlvbl8xIiwicXVldWVfcmVzcG9uc2VfY29sbGVjdGlvbl8xIiwiaW5kZXhfMSIsImxvYWRBY2NvdW50TWV0aG9kcyIsIm1ldGhvZE1hbmFnZXIiLCJtZXRob2RzIiwic2V0V1NBcHBWZXJzaW9uIiwic2tpcFF1ZXVlIiwiY2hlY2siLCJkZWZhdWx0IiwidmVyc2lvbiIsIk51bWJlciIsImZ1bmN0aW9uIiwiTG9nZ2VkSW5Vc2VycyIsInVwZGF0ZU9uZSIsImlkX3dzIiwidGhpcyIsIiRzZXQiLCJhcHBfdmVyc2lvbiIsImV4ZWMiLCJyZWxvYWRXUyIsIlN0cmluZyIsIl90aGlzIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJfX2F3YWl0ZXIiLCJRdWV1ZVJlc3BvbnNlcyIsImNyZWF0ZSIsIl9pZCIsIlR5cGVzIiwiT2JqZWN0SWQiLCJ0b0hleFN0cmluZyIsIl9fdiIsIm1ldGhvZCIsIm1ldGhvZF9kYXRhIiwibWVzc2FnZUlkIiwiaWRfdXNlciIsInVzZXIiLCJyZXNwb25zZSIsImhhc0Vycm9yIiwiZGF0YSIsInRoZW4iLCJ2YWwiLCJyZWNvbm5lY3RXUyIsImRpc2Nvbm5lY3RXUyIsImNyZWF0ZVVzZXJBbmRFbWFpbEVucm9sbG1lbnQiLCJ0eXBlIiwiVXNlcnMiLCJ1c2VySWQiLCJ1c2VybmFtZSIsImVtYWlsIiwiZnVsbG5hbWUiLCJyb2xlcyIsImFjdGl2ZSIsInJlYWRvbmx5Iiwic2VydmljZXMiLCJlbnJvbGxtZW50Iiwic2lnbiIsInNlcnZlckNvbmZpZyIsImV4cGlyZXNJbiIsInBob25lbnVtYmVyIiwiX2EiLCJzZW50Iiwic2V0UGFzc3dvcmQiLCJyYW5kb21TdHJpbmciLCJlcnIiLCJyZXMiLCJzYXZlIiwiZW1haWxEYXRhIiwidXJsIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwicmVhZEZpbGUiLCJodG1sIiwidGVtcGxhdGUiLCJjb21waWxlIiwicmVnaXN0ZXJIZWxwZXIiLCJhIiwiYiIsInNlbmRFbWFpbCIsImdldENsaWVudE5hbWUiLCJlcnJFbWFpbCIsInJlc2V0VXNlclBhc3N3b3JkIiwiZmluZE9uZSIsImZvcmdvdF9wYXNzd29yZCIsImVtYWlsRGF0YV8xIiwidXNlclRvQ2hhbmdlUGFzc3dvcmQiLCJ1c2VyV2hvUmVzZXRQYXNzd29yZCIsImxlbmd0aCIsImNoYXJzIiwicmVzdWx0IiwiaSIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJvN0NBQUEsSUFBQUEsZUFBQUMsUUFBQSxnQkFDQUMsV0FBQUQsUUFBQSxZQUNBRSxrQkFBQUYsUUFBQSxrQ0FDQUcsV0FBQUgsUUFBQSxjQUNBSSxJQUFBSixRQUFBLGdCQUNBSyw2QkFBQUwsUUFBQSw2Q0FDQU0sNEJBQUFOLFFBQUEsNENBRUFPLFFBQUFQLFFBQUEsWUFFQSxTQUFnQlEsbUJBQW1CQyxHQUNsQ0EsRUFBY0MsUUFBUSxDQUNyQkMsZ0JBQWlCLENBQ2hCQyxXQUFXLEVBQ1hDLE1BQU8sSUFBSWQsZUFBQWUsUUFBYSxDQUN2QkMsUUFBU0MsU0FFVkMsU0FBVSxTQUFTRixHQUNsQixPQUFPViw2QkFBQWEsY0FBY0MsVUFBVSxDQUFDQyxNQUFPQyxLQUFLRCxPQUFRLENBQUNFLEtBQU0sQ0FBQ0MsWUFBYVIsS0FBV1MsU0FHdEZDLFNBQVUsQ0FDVGIsV0FBVyxFQUNYQyxNQUFPLElBQUlkLGVBQUFlLFFBQWEsQ0FDdkJNLE1BQU9NLFNBRVJULFNBQVUsU0FBU0csR0FBVCxJQUFBTyxFQUFBTixLQUNULE9BQU8sSUFBSU8sUUFBUSxTQUFPQyxFQUFTQyxHQUFNLE9BQUFDLFVBQUFKLE9BQUEsT0FBQSxFQUFBLHNEQUN4Q3JCLDRCQUFBMEIsZUFBZUMsT0FBTyxDQUNyQkMs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QUVqSDdELEdBQVEsSUFDTixTQUFBeUQsR0FBWSxPQUFBeEQsRUFBT3dELHVCQVM3QixTQUFTaEIsYUFBYXVCLEVBQVFDLEdBRTdCLElBREEsSUFBSUMsRUFBUyxHQUNKQyxFQUFJSCxFQUFZLEVBQUpHLElBQVNBLEVBQUtELEdBQVVELEVBQU1HLEtBQUtDLE1BQU1ELEtBQUtFLFNBQVdMLEVBQU1ELFNBQ3BGLE9BQU9FLEVBMUxSSyxRQUFBNUYsbUJBQUFBIiwiZmlsZSI6Im1ldGhvZHMvYWNjb3VudHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU2ltcGxlU2NoZW1hIGZyb20gJ3NpbXBsLXNjaGVtYSc7XG5pbXBvcnQgeyBUeXBlcyB9IGZyb20gJ21vbmdvb3NlJztcbmltcG9ydCB7IFVzZXJzIH0gZnJvbSAnLi4vY29sbGVjdGlvbnMvdXNlci5jb2xsZWN0aW9uJztcbmltcG9ydCAqIGFzIGhhbmRsZWJhcnMgZnJvbSAnaGFuZGxlYmFycyc7XG5pbXBvcnQgKiBhcyBqd3QgZnJvbSAnanNvbndlYnRva2VuJztcbmltcG9ydCB7IExvZ2dlZEluVXNlcnMgfSBmcm9tICcuLi9jb2xsZWN0aW9ucy9sb2dnZWQtaW4tdXNlcnMuY29sbGVjdGlvbic7XG5pbXBvcnQgeyBRdWV1ZVJlc3BvbnNlcyB9IGZyb20gJy4uL2NvbGxlY3Rpb25zL3F1ZXVlLXJlc3BvbnNlLmNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgTWV0aG9kTWFuYWdlciB9IGZyb20gJy4uL21hbmFnZXJzL21ldGhvZC5tYW5hZ2VyJztcbmltcG9ydCBSZXNvbHZlSU9TZXJ2ZXIgZnJvbSAnLi4vaW5kZXgnO1xuXG5leHBvcnQgZnVuY3Rpb24gbG9hZEFjY291bnRNZXRob2RzKG1ldGhvZE1hbmFnZXI6IE1ldGhvZE1hbmFnZXIpIHtcblx0bWV0aG9kTWFuYWdlci5tZXRob2RzKHtcblx0XHRzZXRXU0FwcFZlcnNpb246IHtcblx0XHRcdHNraXBRdWV1ZTogdHJ1ZSxcblx0XHRcdGNoZWNrOiBuZXcgU2ltcGxlU2NoZW1hKHtcblx0XHRcdFx0dmVyc2lvbjogTnVtYmVyXG5cdFx0XHR9KSxcblx0XHRcdGZ1bmN0aW9uOiBmdW5jdGlvbih2ZXJzaW9uKSB7XG5cdFx0XHRcdHJldHVybiBMb2dnZWRJblVzZXJzLnVwZGF0ZU9uZSh7aWRfd3M6IHRoaXMuaWRfd3N9LCB7JHNldDoge2FwcF92ZXJzaW9uOiB2ZXJzaW9ufX0pLmV4ZWMoKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdHJlbG9hZFdTOiB7XG5cdFx0XHRza2lwUXVldWU6IHRydWUsXG5cdFx0XHRjaGVjazogbmV3IFNpbXBsZVNjaGVtYSh7XG5cdFx0XHRcdGlkX3dzOiBTdHJpbmdcblx0XHRcdH0pLFxuXHRcdFx0ZnVuY3Rpb246IGZ1bmN0aW9uKGlkX3dzKSB7XG5cdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHRcdFx0UXVldWVSZXNwb25zZXMuY3JlYXRlKHtcblx0XHRcdFx0XHRcdF9pZDogVHlwZXMuT2JqZWN0SWQoKS50b0hleFN0cmluZygpLFxuXHRcdFx0XHRcdFx0X192OiAwLFxuXHRcdFx0XHRcdFx0bWV0aG9kOiAncmVsb2FkV1NDb21tYW5kJyxcblx0XHRcdFx0XHRcdG1ldGhvZF9kYXRhOiBbXSxcblx0XHRcdFx0XHRcdGlkX3dzOiBpZF93cyxcblx0XHRcdFx0XHRcdG1lc3NhZ2VJZDogMCxcblx0XHRcdFx0XHRcdGlkX3VzZXI6IHRoaXMuaWRfdXNlcixcblx0XHRcdFx0XHRcdHVzZXI6IHRoaXMudXNlcixcblx0XHRcdFx0XHRcdHJlc3BvbnNlOiB7XG5cdFx0XHRcdFx0XHRcdG1lc3NhZ2VJZDogMCxcblx0XHRcdFx0XHRcdFx0aGFzRXJyb3I6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRkYXRhOiAncmVsb2FkV1NDb21tYW5kJ1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pLnRoZW4odmFsID0+IHtcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHZhbCk7XG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRyZXNvbHZlKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0cmVjb25uZWN0V1M6IHtcblx0XHRcdHNraXBRdWV1ZTogdHJ1ZSxcblx0XHRcdGNoZWNrOiBuZXcgU2ltcGxlU2NoZW1hKHtcblx0XHRcdFx0aWRfd3M6IFN0cmluZ1xuXHRcdFx0fSksXG5cdFx0XHRmdW5jdGlvbjogZnVuY3Rpb24oaWRfd3MpIHtcblx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdFx0XHRRdWV1ZVJlc3BvbnNlcy5jcmVhdGUoe1xuXHRcdFx0XHRcdFx0X2lkOiBUeXBlcy5PYmplY3RJZCgpLnRvSGV4U3RyaW5nKCksXG5cdFx0XHRcdFx0XHRfX3Y6IDAsXG5cdFx0XHRcdFx0XHRtZXRob2Q6ICdyZWNvbm5lY3RXU0NvbW1hbmQnLFxuXHRcdFx0XHRcdFx0bWV0aG9kX2RhdGE6IFtdLFxuXHRcdFx0XHRcdFx0aWRfd3M6IGlkX3dzLFxuXHRcdFx0XHRcdFx0bWVzc2FnZUlkOiAwLFxuXHRcdFx0XHRcdFx0aWRfdXNlcjogdGhpcy5pZF91c2VyLFxuXHRcdFx0XHRcdFx0dXNlcjogdGhpcy51c2VyLFxuXHRcdFx0XHRcdFx0cmVzcG9uc2U6IHtcblx0XHRcdFx0XHRcdFx0bWVzc2FnZUlkOiAwLFxuXHRcdFx0XHRcdFx0XHRoYXNFcnJvcjogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdGRhdGE6ICdyZWNvbm5lY3RXU0NvbW1hbmQnXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRyZXNvbHZlKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0ZGlzY29ubmVjdFdTOiB7XG5cdFx0XHRza2lwUXVldWU6IHRydWUsXG5cdFx0XHRjaGVjazogbmV3IFNpbXBsZVNjaGVtYSh7XG5cdFx0XHRcdGlkX3dzOiBTdHJpbmdcblx0XHRcdH0pLFxuXHRcdFx0ZnVuY3Rpb246IGZ1bmN0aW9uKGlkX3dzKSB7XG5cdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHRcdFx0UXVldWVSZXNwb25zZXMuY3JlYXRlKHtcblx0XHRcdFx0XHRcdF9pZDogVHlwZXMuT2JqZWN0SWQoKS50b0hleFN0cmluZygpLFxuXHRcdFx0XHRcdFx0X192OiAwLFxuXHRcdFx0XHRcdFx0bWV0aG9kOiAnZGlzY29ubmVjdFdTQ29tbWFuZCcsXG5cdFx0XHRcdFx0XHRtZXRob2RfZGF0YTogW10sXG5cdFx0XHRcdFx0XHRpZF93czogaWRfd3MsXG5cdFx0XHRcdFx0XHRtZXNzYWdlSWQ6IDAsXG5cdFx0XHRcdFx0XHRpZF91c2VyOiB0aGlzLmlkX3VzZXIsXG5cdFx0XHRcdFx0XHR1c2VyOiB0aGlzLnVzZXIsXG5cdFx0XHRcdFx0XHRyZXNwb25zZToge1xuXHRcdFx0XHRcdFx0XHRtZXNzYWdlSWQ6IDAsXG5cdFx0XHRcdFx0XHRcdGhhc0Vycm9yOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0ZGF0YTogJ2Rpc2Nvbm5lY3RXU0NvbW1hbmQnXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRyZXNvbHZlKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0Y3JlYXRlVXNlckFuZEVtYWlsRW5yb2xsbWVudDoge1xuXHRcdFx0Y2hlY2s6IG5ldyBTaW1wbGVTY2hlbWEoe1xuXHRcdFx0XHRkYXRhOiB7XG5cdFx0XHRcdFx0dHlwZTogVXNlcnNbJ3NpbXBsc2NoZW1hJ11cblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHRmdW5jdGlvbjogZnVuY3Rpb24oZGF0YSkge1xuXHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0XHRcdGxldCB1c2VySWQgPSBUeXBlcy5PYmplY3RJZCgpLnRvSGV4U3RyaW5nKCk7XG5cblx0XHRcdFx0XHRsZXQgdXNlciA9IGF3YWl0IFVzZXJzLmNyZWF0ZSh7XG5cdFx0XHRcdFx0XHRfaWQ6IHVzZXJJZCxcblx0XHRcdFx0XHRcdF9fdjogMCxcblx0XHRcdFx0XHRcdHVzZXJuYW1lOiBkYXRhLnVzZXJuYW1lLCBcblx0XHRcdFx0XHRcdGVtYWlsOiBkYXRhLmVtYWlsLFxuXHRcdFx0XHRcdFx0ZnVsbG5hbWU6IGRhdGEuZnVsbG5hbWUsXG5cdFx0XHRcdFx0XHRyb2xlczogW10sXG5cdFx0XHRcdFx0XHRhY3RpdmU6IHRydWUsXG5cdFx0XHRcdFx0XHRyZWFkb25seTogZmFsc2UsXG5cdFx0XHRcdFx0XHRzZXJ2aWNlczoge1xuXHRcdFx0XHRcdFx0XHRlbnJvbGxtZW50OiBqd3Quc2lnbih7aWRfdXNlcjogdXNlcklkfSwgdGhpcy5zZXJ2ZXJDb25maWdbJ0pXVF9TRUNSRVQnXSwge1xuXHRcdFx0XHRcdFx0XHRcdGV4cGlyZXNJbiA6IDMgKiAyNCAqIDYwICogNjAgKiAxMDAwIC8vIDMgZGF5c1xuXHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHBob25lbnVtYmVyOiBkYXRhLnBob25lbnVtYmVyXG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHR1c2VyLnNldFBhc3N3b3JkKHJhbmRvbVN0cmluZygyMCwgJzAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyksICgoZXJyLCByZXMpID0+IHtcblx0XHRcdFx0XHRcdHVzZXIuc2F2ZSgpO1xuXG5cdFx0XHRcdFx0XHRsZXQgZW1haWxEYXRhID0ge1xuXHRcdFx0XHRcdFx0XHRmdWxsbmFtZTogdXNlci5mdWxsbmFtZSxcblx0XHRcdFx0XHRcdFx0dXNlcjogdGhpcy51c2VyLFxuXHRcdFx0XHRcdFx0XHR1cmw6IHRoaXMuc2VydmVyQ29uZmlnWydST09UX1VSTCddICsgJy9lbnJvbGwtYWNjb3VudD8nICsgZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuc2VydmVyQ29uZmlnWydTRVJWRVJfVVJMJ10pICsgJyYnICsgdXNlci5zZXJ2aWNlcy5lbnJvbGxtZW50XG5cdFx0XHRcdFx0XHR9O1xuXG5cdFx0XHRcdFx0XHR0aGlzLnJlYWRGaWxlKCdlbWFpbC10ZW1wbGF0ZXMvZW5yb2xsbWVudC5odG1sJykudGhlbihodG1sID0+IHtcblx0XHRcdFx0XHRcdFx0bGV0IHRlbXBsYXRlID0gaGFuZGxlYmFycy5jb21waWxlKGh0bWwpO1xuXHRcdFx0XHRcdFx0XHRoYW5kbGViYXJzLnJlZ2lzdGVySGVscGVyKCdlcXVhbHMnLCAoYSwgYikgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBhID09PSBiO1xuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcblx0XHRcdFx0XHRcdFx0dGhpcy5zZW5kRW1haWwodXNlci5lbWFpbCwgJ1Jlc29sdmVJTyAoJyArIFJlc29sdmVJT1NlcnZlci5nZXRDbGllbnROYW1lKCkgKyAnKSAtIEVucm9sbG1lbnQgRW1haWwnLCAnJywgdGVtcGxhdGUoZW1haWxEYXRhKSk7XG5cdFx0XG5cdFx0XHRcdFx0XHRcdHJlc29sdmUodHJ1ZSk7XG5cdFx0XHRcdFx0XHR9LCBlcnJFbWFpbCA9PiByZWplY3QoZXJyRW1haWwpKTtcblx0XHRcdFx0XHR9KSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0cmVzZXRVc2VyUGFzc3dvcmQ6IHtcblx0XHRcdGNoZWNrOiBuZXcgU2ltcGxlU2NoZW1hKHtcblx0XHRcdFx0dXNlcklkOiB7XG5cdFx0XHRcdFx0dHlwZTogU3RyaW5nXG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0ZnVuY3Rpb246IGZ1bmN0aW9uKHVzZXJJZDogc3RyaW5nKSB7XG5cdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHRcdFx0XHRcblx0XHRcdFx0XHRsZXQgdXNlciA9IGF3YWl0IFVzZXJzLmZpbmRPbmUoe19pZDogdXNlcklkfSk7XG5cdFx0XG5cdFx0XHRcdFx0aWYgKHVzZXIpIHtcblxuXHRcdFx0XHRcdFx0dXNlci5zZXJ2aWNlcy5mb3Jnb3RfcGFzc3dvcmQgPSBqd3Quc2lnbih7aWRfdXNlcjogdXNlcklkfSwgdGhpcy5zZXJ2ZXJDb25maWdbJ0pXVF9TRUNSRVQnXSk7XG5cblx0XHRcdFx0XHRcdGxldCBlbWFpbERhdGEgPSB7XG5cdFx0XHRcdFx0XHRcdHVzZXJUb0NoYW5nZVBhc3N3b3JkOiB1c2VyLmZ1bGxuYW1lLFxuXHRcdFx0XHRcdFx0XHR1c2VyV2hvUmVzZXRQYXNzd29yZDogdGhpcy51c2VyLFxuXHRcdFx0XHRcdFx0XHR1cmw6IHRoaXMuc2VydmVyQ29uZmlnWydST09UX1VSTCddICsgJy9mb3Jnb3QtcGFzc3dvcmQ/JyArIGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLnNlcnZlckNvbmZpZ1snU0VSVkVSX1VSTCddKSArICcmJyArIHVzZXIuc2VydmljZXMuZm9yZ290X3Bhc3N3b3JkXG5cdFx0XHRcdFx0XHR9O1xuXG5cdFx0XHRcdFx0XHRVc2Vycy51cGRhdGVPbmUoe19pZDogdXNlci5faWR9LCB7JHNldDoge3NlcnZpY2VzOiB1c2VyLnNlcnZpY2VzfX0pLmV4ZWMoKGVyciwgcmVzKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMucmVhZEZpbGUoJ2VtYWlsLXRlbXBsYXRlcy9mb3Jnb3QtcGFzc3dvcmQuaHRtbCcpLnRoZW4oaHRtbCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IHRlbXBsYXRlID0gaGFuZGxlYmFycy5jb21waWxlKGh0bWwpO1xuXHRcdFx0XHRcdFx0XHRcdGhhbmRsZWJhcnMucmVnaXN0ZXJIZWxwZXIoJ2VxdWFscycsIChhLCBiKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gYSA9PT0gYjtcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuc2VuZEVtYWlsKHVzZXIuZW1haWwsICdSZXNvbHZlSU8gKCcgKyBSZXNvbHZlSU9TZXJ2ZXIuZ2V0Q2xpZW50TmFtZSgpICsgJykgLSBGb3Jnb3QgUGFzc3dvcmQnLCAnJywgdGVtcGxhdGUoZW1haWxEYXRhKSk7XG5cdFx0XHRcblx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKHRydWUpO1xuXHRcdFx0XHRcdFx0XHR9LCBlcnJFbWFpbCA9PiByZWplY3QoZXJyRW1haWwpKTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9KTtcbn1cblxuZnVuY3Rpb24gcmFuZG9tU3RyaW5nKGxlbmd0aCwgY2hhcnMpIHtcblx0bGV0IHJlc3VsdCA9ICcnO1xuXHRmb3IgKGxldCBpID0gbGVuZ3RoOyBpID4gMDsgLS1pKSB7IHJlc3VsdCArPSBjaGFyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFycy5sZW5ndGgpXTsgfVxuXHRyZXR1cm4gcmVzdWx0O1xufSJdfQ==
package/methods/aws.js CHANGED
@@ -1 +1,2 @@
1
- "use strict";var __awaiter=this&&this.__awaiter||function(o,l,c,u){return new(c||(c=Promise))(function(e,t){function n(e){try{r(u.next(e))}catch(e){t(e)}}function i(e){try{r(u.throw(e))}catch(e){t(e)}}function r(t){t.done?e(t.value):new c(function(e){e(t.value)}).then(n,i)}r((u=u.apply(o,l||[])).next())})},__generator=this&&this.__generator||function(n,i){var r,o,l,e,c={label:0,sent:function(){if(1&l[0])throw l[1];return l[1]},trys:[],ops:[]};return e={next:t(0),throw:t(1),return:t(2)},"function"==typeof Symbol&&(e[Symbol.iterator]=function(){return this}),e;function t(t){return function(e){return function(t){if(r)throw new TypeError("Generator is already executing.");for(;c;)try{if(r=1,o&&(l=2&t[0]?o.return:t[0]?o.throw||((l=o.return)&&l.call(o),0):o.next)&&!(l=l.call(o,t[1])).done)return l;switch(o=0,l&&(t=[2&t[0],l.value]),t[0]){case 0:case 1:l=t;break;case 4:return c.label++,{value:t[1],done:!1};case 5:c.label++,o=t[1],t=[0];continue;case 7:t=c.ops.pop(),c.trys.pop();continue;default:if(!(l=0<(l=c.trys).length&&l[l.length-1])&&(6===t[0]||2===t[0])){c=0;continue}if(3===t[0]&&(!l||t[1]>l[0]&&t[1]<l[3])){c.label=t[1];break}if(6===t[0]&&c.label<l[1]){c.label=l[1],l=t;break}if(l&&c.label<l[2]){c.label=l[2],c.ops.push(t);break}l[2]&&c.ops.pop(),c.trys.pop();continue}t=i.call(n,c)}catch(e){t=[6,e],o=0}finally{r=l=0}if(5&t[0])throw t[1];return{value:t[0]?t[1]:void 0,done:!0}}([t,e])}}};Object.defineProperty(exports,"__esModule",{value:!0});var file_collection_1=require("../collections/file.collection"),mongoose_1=require("mongoose"),simpl_schema_1=require("simpl-schema"),index_1=require("../index"),pdfCnt=1e6;function loadAWSMethods(e){e.methods({uploadFileAndSave:{skipQueue:!0,check:new simpl_schema_1.default({fileName:{type:String},fileData:{type:String},fileSize:{type:Number},fileOrder:{type:Number},fileType:{type:String}}),function:function(o,t,l,c,u){var s=this;return new Promise(function(n,i){if(o){var r="uploads/"+Date.now()+"-"+pdfCnt+++"-"+o,e={Bucket:s.serverConfig.AWSBUCKET,Key:r,Body:Buffer.from(t.replace("data:"+t.split(",")[0].split(":")[1].split(";")[0]+";base64,",""),"base64"),ACL:"private",ContentType:t.split(",")[0].split(":")[1].split(";")[0],ContentDisposition:"inline"};s.getAWS().upload(e,function(e,t){e?i(e):t&&file_collection_1.Files.create({_id:mongoose_1.Types.ObjectId().toHexString(),name:o,size:l,key:r,order:c,type:u}).then(function(e){n(e)},function(e){return i(e)})})}})}},deleteFiles:{check:new simpl_schema_1.default({keys:{type:Array},"keys.$":{type:String}}),function:function(l){var e=this;return new Promise(function(r,o){return __awaiter(e,void 0,void 0,function(){var t,n,i=this;return __generator(this,function(e){switch(e.label){case 0:return[4,file_collection_1.Files.find({key:{$in:l}})];case 1:return t=e.sent(),n=t.length,t.forEach(function(e){file_collection_1.Files.deleteOne({_id:e._id}).exec();var t={Bucket:i.serverConfig.AWSBUCKET,Key:e.key};i.getAWS().deleteObject(t,function(e,t){e?o(e):--n||r(t)})}),[2]}})})})}},deleteFile:{check:new simpl_schema_1.default({key:{type:String}}),function:function(o){var e=this;return new Promise(function(i,r){return __awaiter(e,void 0,void 0,function(){var t,n;return __generator(this,function(e){switch(e.label){case 0:return[4,file_collection_1.Files.findOne({key:o})];case 1:return(t=e.sent())||r("Could not find file"),file_collection_1.Files.deleteOne({_id:t._id}).exec(),n={Bucket:this.serverConfig.AWSBUCKET,Key:o},this.getAWS().deleteObject(n,function(e,t){e?r(e):i(t)}),[2]}})})})}},deleteFileWithId:{check:new simpl_schema_1.default({id_file:{type:String}}),function:function(o){var e=this;return new Promise(function(i,r){return __awaiter(e,void 0,void 0,function(){var t,n;return __generator(this,function(e){switch(e.label){case 0:return[4,file_collection_1.Files.findOne({_id:o})];case 1:return(t=e.sent())||r("Could not find file"),n={Bucket:this.serverConfig.AWSBUCKET,Key:t.key},this.getAWS().deleteObject(n,function(e,t){e?r(e):i(t)}),file_collection_1.Files.deleteOne({_id:t._id}).exec(),[2]}})})})}},getSignedUrlWithId:{skipQueue:!0,check:new simpl_schema_1.default({id_file:{type:String},expires:{type:Number}}),function:function(o,l){var e=this;return new Promise(function(i,r){return __awaiter(e,void 0,void 0,function(){var t,n;return __generator(this,function(e){switch(e.label){case 0:return[4,file_collection_1.Files.findOne({_id:o})];case 1:return t=e.sent(),n={Bucket:this.serverConfig.AWSBUCKET,Key:t.key,Expires:l},this.getAWS().getSignedUrl("getObject",n,function(e,t){e?r(e):i(t)}),[2]}})})})}},getSignedUrl:{skipQueue:!0,check:new simpl_schema_1.default({key:{type:String},expires:{type:Number}}),function:function(t,r){var o=this;return new Promise(function(n,i){var e={Bucket:o.serverConfig.AWSBUCKET,Key:t,Expires:r};o.getAWS().getSignedUrl("getObject",e,function(e,t){e?i(e):n(t)})})}},getSignedUrls:{skipQueue:!0,check:new simpl_schema_1.default({keys:{type:Array},"keys.$":{type:String},expires:{type:Number}}),function:function(i,r){var o=this;return new Promise(function(e,t){var n=[];i.forEach(function(e){var t={Bucket:o.serverConfig.AWSBUCKET,Key:e,Expires:r};n.push(o.getAWS().getSignedUrl("getObject",t))}),e(n)})}},emailFile:{skipQueue:!0,check:new simpl_schema_1.default({id_file:{type:String},email:{type:String}}),function:function(t,o){var e=this,l=this;return new Promise(function(i,r){return __awaiter(e,void 0,void 0,function(){var n;return __generator(this,function(e){switch(e.label){case 0:return[4,file_collection_1.Files.findById(t)];case 1:return(n=e.sent())?l.callMethodInternal.call(l,"getSignedUrl",n.key,900,function(e,t){t?(l.sendEmail(o,index_1.default.getClientName()+" File - "+n.name,"Attached is the file requested for email.","",[{filename:n.name,path:t}]),i(!0)):r("Could not get file URL")}):r("Could not find file"),[2]}})})})}}})}exports.loadAWSMethods=loadAWSMethods;
1
+ "use strict";var __awaiter=this&&this.__awaiter||function(o,l,c,u){return new(c||(c=Promise))(function(e,t){function n(e){try{r(u.next(e))}catch(e){t(e)}}function i(e){try{r(u.throw(e))}catch(e){t(e)}}function r(t){t.done?e(t.value):new c(function(e){e(t.value)}).then(n,i)}r((u=u.apply(o,l||[])).next())})},__generator=this&&this.__generator||function(n,i){var r,o,l,e,c={label:0,sent:function(){if(1&l[0])throw l[1];return l[1]},trys:[],ops:[]};return e={next:t(0),throw:t(1),return:t(2)},"function"==typeof Symbol&&(e[Symbol.iterator]=function(){return this}),e;function t(t){return function(e){return function(t){if(r)throw new TypeError("Generator is already executing.");for(;c;)try{if(r=1,o&&(l=2&t[0]?o.return:t[0]?o.throw||((l=o.return)&&l.call(o),0):o.next)&&!(l=l.call(o,t[1])).done)return l;switch(o=0,l&&(t=[2&t[0],l.value]),t[0]){case 0:case 1:l=t;break;case 4:return c.label++,{value:t[1],done:!1};case 5:c.label++,o=t[1],t=[0];continue;case 7:t=c.ops.pop(),c.trys.pop();continue;default:if(!(l=0<(l=c.trys).length&&l[l.length-1])&&(6===t[0]||2===t[0])){c=0;continue}if(3===t[0]&&(!l||t[1]>l[0]&&t[1]<l[3])){c.label=t[1];break}if(6===t[0]&&c.label<l[1]){c.label=l[1],l=t;break}if(l&&c.label<l[2]){c.label=l[2],c.ops.push(t);break}l[2]&&c.ops.pop(),c.trys.pop();continue}t=i.call(n,c)}catch(e){t=[6,e],o=0}finally{r=l=0}if(5&t[0])throw t[1];return{value:t[0]?t[1]:void 0,done:!0}}([t,e])}}};Object.defineProperty(exports,"__esModule",{value:!0});var file_collection_1=require("../collections/file.collection"),mongoose_1=require("mongoose"),simpl_schema_1=require("simpl-schema"),index_1=require("../index"),pdfCnt=1e6;function loadAWSMethods(e){e.methods({uploadFileAndSave:{skipQueue:!0,check:new simpl_schema_1.default({fileName:{type:String},fileData:{type:String},fileSize:{type:Number},fileOrder:{type:Number},fileType:{type:String}}),function:function(o,t,l,c,u){var s=this;return new Promise(function(n,i){if(o){var r="uploads/"+Date.now()+"-"+pdfCnt+++"-"+o,e={Bucket:s.serverConfig.AWSBUCKET,Key:r,Body:Buffer.from(t.replace("data:"+t.split(",")[0].split(":")[1].split(";")[0]+";base64,",""),"base64"),ACL:"private",ContentType:t.split(",")[0].split(":")[1].split(";")[0],ContentDisposition:"inline"};s.getAWS().upload(e,function(e,t){e?i(e):t&&file_collection_1.Files.create({_id:mongoose_1.Types.ObjectId().toHexString(),name:o,size:l,key:r,order:c,type:u}).then(function(e){n(e)},function(e){return i(e)})})}})}},deleteFiles:{check:new simpl_schema_1.default({keys:{type:Array},"keys.$":{type:String}}),function:function(l){var e=this;return new Promise(function(r,o){return __awaiter(e,void 0,void 0,function(){var t,n,i=this;return __generator(this,function(e){switch(e.label){case 0:return[4,file_collection_1.Files.find({key:{$in:l}})];case 1:return t=e.sent(),n=t.length,t.forEach(function(e){file_collection_1.Files.deleteOne({_id:e._id}).exec();var t={Bucket:i.serverConfig.AWSBUCKET,Key:e.key};i.getAWS().deleteObject(t,function(e,t){e?o(e):--n||r(t)})}),[2]}})})})}},deleteFile:{check:new simpl_schema_1.default({key:{type:String}}),function:function(o){var e=this;return new Promise(function(i,r){return __awaiter(e,void 0,void 0,function(){var t,n;return __generator(this,function(e){switch(e.label){case 0:return[4,file_collection_1.Files.findOne({key:o})];case 1:return(t=e.sent())||r("Could not find file"),file_collection_1.Files.deleteOne({_id:t._id}).exec(),n={Bucket:this.serverConfig.AWSBUCKET,Key:o},this.getAWS().deleteObject(n,function(e,t){e?r(e):i(t)}),[2]}})})})}},deleteFileWithId:{check:new simpl_schema_1.default({id_file:{type:String}}),function:function(o){var e=this;return new Promise(function(i,r){return __awaiter(e,void 0,void 0,function(){var t,n;return __generator(this,function(e){switch(e.label){case 0:return[4,file_collection_1.Files.findOne({_id:o})];case 1:return(t=e.sent())||r("Could not find file"),n={Bucket:this.serverConfig.AWSBUCKET,Key:t.key},this.getAWS().deleteObject(n,function(e,t){e?r(e):i(t)}),file_collection_1.Files.deleteOne({_id:t._id}).exec(),[2]}})})})}},getSignedUrlWithId:{skipQueue:!0,check:new simpl_schema_1.default({id_file:{type:String},expires:{type:Number}}),function:function(o,l){var e=this;return new Promise(function(i,r){return __awaiter(e,void 0,void 0,function(){var t,n;return __generator(this,function(e){switch(e.label){case 0:return[4,file_collection_1.Files.findOne({_id:o})];case 1:return t=e.sent(),n={Bucket:this.serverConfig.AWSBUCKET,Key:t.key,Expires:l},this.getAWS().getSignedUrl("getObject",n,function(e,t){e?r(e):i(t)}),[2]}})})})}},getSignedUrl:{skipQueue:!0,check:new simpl_schema_1.default({key:{type:String},expires:{type:Number}}),function:function(t,r){var o=this;return new Promise(function(n,i){var e={Bucket:o.serverConfig.AWSBUCKET,Key:t,Expires:r};o.getAWS().getSignedUrl("getObject",e,function(e,t){e?i(e):n(t)})})}},getSignedUrls:{skipQueue:!0,check:new simpl_schema_1.default({keys:{type:Array},"keys.$":{type:String},expires:{type:Number}}),function:function(i,r){var o=this;return new Promise(function(e,t){var n=[];i.forEach(function(e){var t={Bucket:o.serverConfig.AWSBUCKET,Key:e,Expires:r};n.push(o.getAWS().getSignedUrl("getObject",t))}),e(n)})}},emailFile:{skipQueue:!0,check:new simpl_schema_1.default({id_file:{type:String},email:{type:String}}),function:function(t,o){var e=this,l=this;return new Promise(function(i,r){return __awaiter(e,void 0,void 0,function(){var n;return __generator(this,function(e){switch(e.label){case 0:return[4,file_collection_1.Files.findById(t)];case 1:return(n=e.sent())?l.callMethodInternal.call(l,"getSignedUrl",n.key,900,function(e,t){t?(l.sendEmail(o,index_1.default.getClientName()+" File - "+n.name,"Attached is the file requested for email.","",[{filename:n.name,path:t}]),i(!0)):r("Could not get file URL")}):r("Could not find file"),[2]}})})})}}})}exports.loadAWSMethods=loadAWSMethods;
2
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZXRob2RzL2F3cy50cyJdLCJuYW1lcyI6WyJmaWxlX2NvbGxlY3Rpb25fMSIsInJlcXVpcmUiLCJtb25nb29zZV8xIiwic2ltcGxfc2NoZW1hXzEiLCJpbmRleF8xIiwicGRmQ250IiwibG9hZEFXU01ldGhvZHMiLCJtZXRob2RNYW5hZ2VyIiwibWV0aG9kcyIsInVwbG9hZEZpbGVBbmRTYXZlIiwic2tpcFF1ZXVlIiwiY2hlY2siLCJkZWZhdWx0IiwiZmlsZU5hbWUiLCJ0eXBlIiwiU3RyaW5nIiwiZmlsZURhdGEiLCJmaWxlU2l6ZSIsIk51bWJlciIsImZpbGVPcmRlciIsImZpbGVUeXBlIiwiZnVuY3Rpb24iLCJ0aGF0IiwidGhpcyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0Iiwia2V5XzEiLCJEYXRlIiwibm93IiwibmV3UGFyYW1zIiwiQnVja2V0Iiwic2VydmVyQ29uZmlnIiwiQVdTQlVDS0VUIiwiS2V5IiwiQm9keSIsIkJ1ZmZlciIsImZyb20iLCJyZXBsYWNlIiwic3BsaXQiLCJBQ0wiLCJDb250ZW50VHlwZSIsIkNvbnRlbnREaXNwb3NpdGlvbiIsImdldEFXUyIsInVwbG9hZCIsImVyciIsInJlcyIsIkZpbGVzIiwiY3JlYXRlIiwiX2lkIiwiVHlwZXMiLCJPYmplY3RJZCIsInRvSGV4U3RyaW5nIiwibmFtZSIsInNpemUiLCJrZXkiLCJvcmRlciIsInRoZW4iLCJyZXNGaWxlIiwiZXJyRmlsZSIsImRlbGV0ZUZpbGVzIiwia2V5cyIsIkFycmF5Iiwia2V5cy4kIiwiX3RoaXMiLCJfX2F3YWl0ZXIiLCJmaW5kIiwiJGluIiwiZmlsZXMiLCJfYSIsInNlbnQiLCJkZWxldGVDbnQiLCJsZW5ndGgiLCJmb3JFYWNoIiwiZmlsZSIsImRlbGV0ZU9uZSIsImV4ZWMiLCJkZWxQYXJhbXMiLCJkZWxldGVPYmplY3QiLCJkZWxldGVGaWxlIiwiZmluZE9uZSIsImRlbGV0ZUZpbGVXaXRoSWQiLCJpZF9maWxlIiwiZ2V0U2lnbmVkVXJsV2l0aElkIiwiZXhwaXJlcyIsInBhcmFtcyIsIkV4cGlyZXMiLCJnZXRTaWduZWRVcmwiLCJnZXRTaWduZWRVcmxzIiwicHVzaCIsImVtYWlsRmlsZSIsImVtYWlsIiwiZmluZEJ5SWQiLCJjYWxsTWV0aG9kSW50ZXJuYWwiLCJjYWxsIiwiZXJyUERGIiwicmVzUERGIiwic2VuZEVtYWlsIiwiZ2V0Q2xpZW50TmFtZSIsImZpbGVuYW1lIiwicGF0aCIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJvN0NBQ0EsSUFBQUEsa0JBQUFDLFFBQUEsa0NBQ0FDLFdBQUFELFFBQUEsWUFDQUUsZUFBQUYsUUFBQSxnQkFDQUcsUUFBQUgsUUFBQSxZQUVJSSxPQUFTLElBRWIsU0FBZ0JDLGVBQWVDLEdBQzlCQSxFQUFjQyxRQUFRLENBQ3JCQyxrQkFBbUIsQ0FDbEJDLFdBQVcsRUFDWEMsTUFBTyxJQUFJUixlQUFBUyxRQUFhLENBQ3ZCQyxTQUFVLENBQ1RDLEtBQU1DLFFBRVBDLFNBQVUsQ0FDVEYsS0FBTUMsUUFFUEUsU0FBVSxDQUNUSCxLQUFNSSxRQUVQQyxVQUFXLENBQ1ZMLEtBQU1JLFFBRVBFLFNBQVUsQ0FDVE4sS0FBTUMsVUFHUk0sU0FBVSxTQUFTUixFQUFrQkcsRUFBa0JDLEVBQWtCRSxFQUFtQkMsR0FDM0YsSUFBSUUsRUFBT0MsS0FDWCxPQUFPLElBQUlDLFFBQVEsU0FBQ0MsRUFBU0MsR0FDNUIsR0FBSWIsRUFBVSxDQUNiLElBQUljLEVBQU0sV0FBYUMsS0FBS0MsTUFBUSxJQUFPeEIsU0FBWSxJQUFNUSxFQUV6RGlCLEVBQVksQ0FBQ0MsT0FBUVQsRUFBS1UsYUFBYUMsVUFBV0MsSUFBS1AsRUFBS1EsS0FBTUMsT0FBT0MsS0FBS3JCLEVBQVNzQixRQUFRLFFBQVV0QixFQUFTdUIsTUFBTSxLQUFLLEdBQUdBLE1BQU0sS0FBSyxHQUFHQSxNQUFNLEtBQUssR0FBSyxXQUFZLElBQUssVUFBV0MsSUFBSyxVQUFXQyxZQUFhekIsRUFBU3VCLE1BQU0sS0FBSyxHQUFHQSxNQUFNLEtBQUssR0FBR0EsTUFBTSxLQUFLLEdBQUlHLG1CQUFvQixVQUVuU3BCLEVBQUtxQixTQUFTQyxPQUFPZCxFQUFXLFNBQUNlLEVBQUtDLEdBQ2pDRCxFQUNIbkIsRUFBT21CLEdBRUNDLEdBQ1I5QyxrQkFBQStDLE1BQU1DLE9BQU8sQ0FDWkMsSUFBSy9DLFdBQUFnRCxNQUFNQyxXQUFXQyxjQUFlQyxLQUFNeEMsRUFBVXlDLEtBQU1yQyxFQUFVc0MsSUFBSzVCLEVBQUs2QixNQUFPckMsRUFBV0wsS0FBTU0sSUFDckdxQyxLQUFLLFNBQUFDLEdBQ1BqQyxFQUFRaUMsSUFDTixTQUFBQyxHQUFXLE9BQUFqQyxFQUFPaUMsWUFPM0JDLFlBQWEsQ0FDWmpELE1BQU8sSUFBSVIsZUFBQVMsUUFBYSxDQUN2QmlELEtBQU0sQ0FDTC9DLEtBQU1nRCxPQUVQQyxTQUFVLENBQ1RqRCxLQUFNQyxVQUdSTSxTQUFVLFNBQVN3QyxHQUFULElBQUFHLEVBQUF6QyxLQUNULE9BQU8sSUFBSUMsUUFBUSxTQUFPQyxFQUFTQyxHQUFNLE9BQUF1QyxVQUFBRCxPQUFBLE9BQUEsRUFBQSxxRkFDNUIsTUFBQSxDQUFBLEVBQU1oRSxrQkFBQStDLE1BQU1tQixLQUFLLENBQUNYLElBQUssQ0FBQ1ksSUFBS04sb0JBQXJDTyxFQUFRQyxFQUFBQyxPQUVSQyxFQUFZSCxFQUFNSSxPQUV0QkosRUFBTUssUUFBUSxTQUFBQyxHQUNiMUUsa0JBQUErQyxNQUFNNEIsVUFBVSxDQUFDMUIsSUFBS3lCLEVBQUt6QixNQUFNMkIsT0FFakMsSUFBSUMsRUFBWSxDQUFDOUMsT0FBUWlDLEVBQUtoQyxhQUFhQyxVQUFXQyxJQUFLd0MsRUFBS25CLEtBRWhFUyxFQUFLckIsU0FBU21DLGFBQWFELEVBQVcsU0FBU2hDLEVBQUtDLEdBQy9DRCxFQUNIbkIsRUFBT21CLEtBR1AwQixHQUVDOUMsRUFBUXFCLG9CQVFmaUMsV0FBWSxDQUNYcEUsTUFBTyxJQUFJUixlQUFBUyxRQUFhLENBQ3ZCMkMsSUFBSyxDQUNKekMsS0FBTUMsVUFHUk0sU0FBVSxTQUFTa0MsR0FBVCxJQUFBUyxFQUFBekMsS0FDVCxPQUFPLElBQUlDLFFBQVEsU0FBT0MsRUFBU0MsR0FBTSxPQUFBdUMsVUFBQUQsT0FBQSxPQUFBLEVBQUEsOEVBRTdCLE1BQUEsQ0FBQSxFQUFNaEUsa0JBQUErQyxNQUFNaUMsUUFBUSxDQUFDekIsSUFBS0EsbUJBQWpDbUIsRUFBT0wsRUFBQUMsU0FHVjVDLEVBQU8sdUJBR1IxQixrQkFBQStDLE1BQU00QixVQUFVLENBQUMxQixJQUFLeUIsRUFBS3pCLE1BQU0yQixPQUU3QkMsRUFBWSxDQUFDOUMsT0FBUVIsS0FBS1MsYUFBd0IsVUFBR0UsSUFBS3FCLEdBRTlEaEMsS0FBS29CLFNBQVNtQyxhQUFhRCxFQUFXLFNBQVNoQyxFQUFLQyxHQUMvQ0QsRUFDSG5CLEVBQU9tQixHQUdQcEIsRUFBUXFCLGtCQU1ibUMsaUJBQWtCLENBQ2pCdEUsTUFBTyxJQUFJUixlQUFBUyxRQUFhLENBQ3ZCc0UsUUFBUyxDQUNScEUsS0FBTUMsVUFHUk0sU0FBVSxTQUFTNkQsR0FBVCxJQUFBbEIsRUFBQXpDLEtBQ1QsT0FBTyxJQUFJQyxRQUFRLFNBQU9DLEVBQVNDLEdBQU0sT0FBQXVDLFVBQUFELE9BQUEsT0FBQSxFQUFBLDhFQUU3QixNQUFBLENBQUEsRUFBTWhFLGtCQUFBK0MsTUFBTWlDLFFBQVEsQ0FBQy9CLElBQUtpQyxtQkFBakNSLEVBQU9MLEVBQUFDLFNBR1Y1QyxFQUFPLHVCQUdKbUQsRUFBWSxDQUFDOUMsT0FBUVIsS0FBS1MsYUFBd0IsVUFBR0UsSUFBS3dDLEVBQUtuQixLQUVuRWhDLEtBQUtvQixTQUFTbUMsYUFBYUQsRUFBVyxTQUFTaEMsRUFBS0MsR0FDL0NELEVBQ0huQixFQUFPbUIsR0FHUHBCLEVBQVFxQixLQUlWOUMsa0JBQUErQyxNQUFNNEIsVUFBVSxDQUFDMUIsSUFBS3lCLEVBQUt6QixNQUFNMkIsb0JBSXBDTyxtQkFBb0IsQ0FDbkJ6RSxXQUFXLEVBQ1hDLE1BQU8sSUFBSVIsZUFBQVMsUUFBYSxDQUN2QnNFLFFBQVMsQ0FDUnBFLEtBQU1DLFFBRVBxRSxRQUFTLENBQ1J0RSxLQUFNSSxVQUdSRyxTQUFVLFNBQVM2RCxFQUFpQkUsR0FBMUIsSUFBQXBCLEVBQUF6QyxLQUNULE9BQU8sSUFBSUMsUUFBUSxTQUFPQyxFQUFTQyxHQUFNLE9BQUF1QyxVQUFBRCxPQUFBLE9BQUEsRUFBQSw4RUFDN0IsTUFBQSxDQUFBLEVBQU1oRSxrQkFBQStDLE1BQU1pQyxRQUFRLENBQUMvQixJQUFLaUMsbUJBQWpDUixFQUFPTCxFQUFBQyxPQUNQZSxFQUFTLENBQUN0RCxPQUFRUixLQUFLUyxhQUFhQyxVQUFXQyxJQUFLd0MsRUFBS25CLElBQUsrQixRQUFTRixHQUUzRTdELEtBQUtvQixTQUFTNEMsYUFBYSxZQUFhRixFQUFRLFNBQUN4QyxFQUFLQyxHQUNqREQsRUFDSG5CLEVBQU9tQixHQUdQcEIsRUFBUXFCLGtCQU1ieUMsYUFBYyxDQUNiN0UsV0FBVyxFQUNYQyxNQUFPLElBQUlSLGVBQUFTLFFBQWEsQ0FDdkIyQyxJQUFLLENBQ0p6QyxLQUFNQyxRQUVQcUUsUUFBUyxDQUNSdEUsS0FBTUksVUFHUkcsU0FBVSxTQUFTa0MsRUFBYTZCLEdBQXRCLElBQUFwQixFQUFBekMsS0FDVCxPQUFPLElBQUlDLFFBQVEsU0FBQ0MsRUFBU0MsR0FDNUIsSUFBSTJELEVBQVMsQ0FBQ3RELE9BQVFpQyxFQUFLaEMsYUFBYUMsVUFBV0MsSUFBS3FCLEVBQUsrQixRQUFTRixHQUV0RXBCLEVBQUtyQixTQUFTNEMsYUFBYSxZQUFhRixFQUFRLFNBQUN4QyxFQUFLQyxHQUNqREQsRUFDSG5CLEVBQU9tQixHQUdQcEIsRUFBUXFCLFNBTWIwQyxjQUFlLENBQ2Q5RSxXQUFXLEVBQ1hDLE1BQU8sSUFBSVIsZUFBQVMsUUFBYSxDQUN2QmlELEtBQU0sQ0FDTC9DLEtBQU1nRCxPQUVQQyxTQUFVLENBQ1RqRCxLQUFNQyxRQUVQcUUsUUFBUyxDQUNSdEUsS0FBTUksVUFHUkcsU0FBVSxTQUFTd0MsRUFBZ0J1QixHQUF6QixJQUFBcEIsRUFBQXpDLEtBQ1QsT0FBTyxJQUFJQyxRQUFRLFNBQUNDLEVBQVNDLEdBQzVCLElBQUlvQixFQUFNLEdBRVZlLEVBQUtZLFFBQVEsU0FBQWxCLEdBQ1osSUFBSThCLEVBQVMsQ0FBQ3RELE9BQVFpQyxFQUFLaEMsYUFBYUMsVUFBV0MsSUFBS3FCLEVBQUsrQixRQUFTRixHQUV0RXRDLEVBQUkyQyxLQUFLekIsRUFBS3JCLFNBQVM0QyxhQUFhLFlBQWFGLE1BR2xENUQsRUFBUXFCLE9BSVg0QyxVQUFXLENBQ1ZoRixXQUFXLEVBQ1hDLE1BQU8sSUFBSVIsZUFBQVMsUUFBYSxDQUN2QnNFLFFBQVMsQ0FDUnBFLEtBQU1DLFFBRVA0RSxNQUFPLENBQ043RSxLQUFNQyxVQUdSTSxTQUFVLFNBQVM2RCxFQUFpQlMsR0FBMUIsSUFBQTNCLEVBQUF6QyxLQUNMRCxFQUFPQyxLQUVYLE9BQU8sSUFBSUMsUUFBUSxTQUFPQyxFQUFTQyxHQUFNLE9BQUF1QyxVQUFBRCxPQUFBLE9BQUEsRUFBQSw0RUFDN0IsTUFBQSxDQUFBLEVBQU1oRSxrQkFBQStDLE1BQU02QyxTQUFTVixXQUVoQyxPQUZJUixFQUFPTCxFQUFBQyxRQU9YaEQsRUFBS3VFLG1CQUFtQkMsS0FBS3hFLEVBQU0sZUFBZ0JvRCxFQUFLbkIsSUFBSyxJQUFLLFNBQUN3QyxFQUFRQyxHQUN0RUEsR0FDSDFFLEVBQUsyRSxVQUFVTixFQUFPdkYsUUFBQVEsUUFBZ0JzRixnQkFBa0IsV0FBYXhCLEVBQUtyQixLQUFNLDRDQUE2QyxHQUFJLENBQUMsQ0FDakk4QyxTQUFVekIsRUFBS3JCLEtBQ2YrQyxLQUFNSixLQUdQdkUsR0FBUSxJQUdSQyxFQUFPLDRCQWRSQSxFQUFPLHNDQTNPYjJFLFFBQUEvRixlQUFBQSIsImZpbGUiOiJtZXRob2RzL2F3cy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1ldGhvZE1hbmFnZXIgfSBmcm9tICcuLi9tYW5hZ2Vycy9tZXRob2QubWFuYWdlcic7XG5pbXBvcnQgeyBGaWxlcyB9IGZyb20gJy4uL2NvbGxlY3Rpb25zL2ZpbGUuY29sbGVjdGlvbic7XG5pbXBvcnQgeyBUeXBlcyB9IGZyb20gJ21vbmdvb3NlJztcbmltcG9ydCBTaW1wbGVTY2hlbWEgZnJvbSAnc2ltcGwtc2NoZW1hJztcbmltcG9ydCBSZXNvbHZlSU9TZXJ2ZXIgZnJvbSAnLi4vaW5kZXgnO1xuXG5sZXQgcGRmQ250ID0gMTAwMDAwMDtcblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRBV1NNZXRob2RzKG1ldGhvZE1hbmFnZXI6IE1ldGhvZE1hbmFnZXIpIHtcblx0bWV0aG9kTWFuYWdlci5tZXRob2RzKHtcblx0XHR1cGxvYWRGaWxlQW5kU2F2ZToge1xuXHRcdFx0c2tpcFF1ZXVlOiB0cnVlLFxuXHRcdFx0Y2hlY2s6IG5ldyBTaW1wbGVTY2hlbWEoe1xuXHRcdFx0XHRmaWxlTmFtZToge1xuXHRcdFx0XHRcdHR5cGU6IFN0cmluZ1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRmaWxlRGF0YToge1xuXHRcdFx0XHRcdHR5cGU6IFN0cmluZ1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRmaWxlU2l6ZToge1xuXHRcdFx0XHRcdHR5cGU6IE51bWJlclxuXHRcdFx0XHR9LFxuXHRcdFx0XHRmaWxlT3JkZXI6IHtcblx0XHRcdFx0XHR0eXBlOiBOdW1iZXJcblx0XHRcdFx0fSxcblx0XHRcdFx0ZmlsZVR5cGU6IHtcblx0XHRcdFx0XHR0eXBlOiBTdHJpbmdcblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHRmdW5jdGlvbjogZnVuY3Rpb24oZmlsZU5hbWU6IHN0cmluZywgZmlsZURhdGE6IHN0cmluZywgZmlsZVNpemU6IG51bWJlciwgZmlsZU9yZGVyOiBudW1iZXIsIGZpbGVUeXBlOiBzdHJpbmcpIHtcblx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzO1xuXHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0XHRcdGlmIChmaWxlTmFtZSkge1xuXHRcdFx0XHRcdFx0bGV0IGtleSA9ICd1cGxvYWRzLycgKyBEYXRlLm5vdygpICsgJy0nICsgKHBkZkNudCsrKSArICctJyArIGZpbGVOYW1lO1xuXHRcdFxuXHRcdFx0XHRcdFx0bGV0IG5ld1BhcmFtcyA9IHtCdWNrZXQ6IHRoYXQuc2VydmVyQ29uZmlnLkFXU0JVQ0tFVCwgS2V5OiBrZXksIEJvZHk6IEJ1ZmZlci5mcm9tKGZpbGVEYXRhLnJlcGxhY2UoJ2RhdGE6JyArIGZpbGVEYXRhLnNwbGl0KCcsJylbMF0uc3BsaXQoJzonKVsxXS5zcGxpdCgnOycpWzBdICsgJztiYXNlNjQsJywgJycpLCAnYmFzZTY0JyksIEFDTDogJ3ByaXZhdGUnLCBDb250ZW50VHlwZTogZmlsZURhdGEuc3BsaXQoJywnKVswXS5zcGxpdCgnOicpWzFdLnNwbGl0KCc7JylbMF0sIENvbnRlbnREaXNwb3NpdGlvbjogJ2lubGluZSd9O1xuXG5cdFx0XHRcdFx0XHR0aGF0LmdldEFXUygpLnVwbG9hZChuZXdQYXJhbXMsIChlcnIsIHJlcykgPT4ge1xuXHRcdFx0XHRcdFx0XHRpZiAoZXJyKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVqZWN0KGVycik7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAocmVzKSB7XG5cdFx0XHRcdFx0XHRcdFx0RmlsZXMuY3JlYXRlKHtcblx0XHRcdFx0XHRcdFx0XHRcdF9pZDogVHlwZXMuT2JqZWN0SWQoKS50b0hleFN0cmluZygpLCBuYW1lOiBmaWxlTmFtZSwgc2l6ZTogZmlsZVNpemUsIGtleToga2V5LCBvcmRlcjogZmlsZU9yZGVyLCB0eXBlOiBmaWxlVHlwZVxuXHRcdFx0XHRcdFx0XHRcdH0pLnRoZW4ocmVzRmlsZSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJlc0ZpbGUpO1xuXHRcdFx0XHRcdFx0XHRcdH0sIGVyckZpbGUgPT4gcmVqZWN0KGVyckZpbGUpKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdGRlbGV0ZUZpbGVzOiB7XG5cdFx0XHRjaGVjazogbmV3IFNpbXBsZVNjaGVtYSh7XG5cdFx0XHRcdGtleXM6IHtcblx0XHRcdFx0XHR0eXBlOiBBcnJheVxuXHRcdFx0XHR9LFxuXHRcdFx0XHQna2V5cy4kJzoge1xuXHRcdFx0XHRcdHR5cGU6IFN0cmluZ1xuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdGZ1bmN0aW9uOiBmdW5jdGlvbihrZXlzOiBzdHJpbmdbXSkge1x0XG5cdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHRcdFx0bGV0IGZpbGVzID0gYXdhaXQgRmlsZXMuZmluZCh7a2V5OiB7JGluOiBrZXlzfX0pO1xuXHRcdFxuXHRcdFx0XHRcdGxldCBkZWxldGVDbnQgPSBmaWxlcy5sZW5ndGg7XG5cdFx0XG5cdFx0XHRcdFx0ZmlsZXMuZm9yRWFjaChmaWxlID0+IHtcblx0XHRcdFx0XHRcdEZpbGVzLmRlbGV0ZU9uZSh7X2lkOiBmaWxlLl9pZH0pLmV4ZWMoKTtcblx0XHRcblx0XHRcdFx0XHRcdGxldCBkZWxQYXJhbXMgPSB7QnVja2V0OiB0aGlzLnNlcnZlckNvbmZpZy5BV1NCVUNLRVQsIEtleTogZmlsZS5rZXl9O1xuXHRcdFx0XG5cdFx0XHRcdFx0XHR0aGlzLmdldEFXUygpLmRlbGV0ZU9iamVjdChkZWxQYXJhbXMsIGZ1bmN0aW9uKGVyciwgcmVzKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChlcnIpIHtcblx0XHRcdFx0XHRcdFx0XHRyZWplY3QoZXJyKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRkZWxldGVDbnQtLTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIWRlbGV0ZUNudCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXMpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0ZGVsZXRlRmlsZToge1xuXHRcdFx0Y2hlY2s6IG5ldyBTaW1wbGVTY2hlbWEoe1xuXHRcdFx0XHRrZXk6IHtcblx0XHRcdFx0XHR0eXBlOiBTdHJpbmdcblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHRmdW5jdGlvbjogZnVuY3Rpb24oa2V5OiBzdHJpbmcpIHtcblx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcblx0XHRcdFx0XHRsZXQgZmlsZSA9IGF3YWl0IEZpbGVzLmZpbmRPbmUoe2tleToga2V5fSk7XG5cdFx0XG5cdFx0XHRcdFx0aWYgKCFmaWxlKSB7XG5cdFx0XHRcdFx0XHRyZWplY3QoJ0NvdWxkIG5vdCBmaW5kIGZpbGUnKTtcblx0XHRcdFx0XHR9XG5cdFx0XG5cdFx0XHRcdFx0RmlsZXMuZGVsZXRlT25lKHtfaWQ6IGZpbGUuX2lkfSkuZXhlYygpO1xuXHRcdFxuXHRcdFx0XHRcdGxldCBkZWxQYXJhbXMgPSB7QnVja2V0OiB0aGlzLnNlcnZlckNvbmZpZ1snQVdTQlVDS0VUJ10sIEtleToga2V5fTtcblx0XHRcblx0XHRcdFx0XHR0aGlzLmdldEFXUygpLmRlbGV0ZU9iamVjdChkZWxQYXJhbXMsIGZ1bmN0aW9uKGVyciwgcmVzKSB7XG5cdFx0XHRcdFx0XHRpZiAoZXJyKSB7XG5cdFx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHJlc29sdmUocmVzKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRkZWxldGVGaWxlV2l0aElkOiB7XG5cdFx0XHRjaGVjazogbmV3IFNpbXBsZVNjaGVtYSh7XG5cdFx0XHRcdGlkX2ZpbGU6IHtcblx0XHRcdFx0XHR0eXBlOiBTdHJpbmdcblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHRmdW5jdGlvbjogZnVuY3Rpb24oaWRfZmlsZTogc3RyaW5nKSB7XG5cdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XG5cdFx0XHRcdFx0bGV0IGZpbGUgPSBhd2FpdCBGaWxlcy5maW5kT25lKHtfaWQ6IGlkX2ZpbGV9KTtcblx0XHRcblx0XHRcdFx0XHRpZiAoIWZpbGUpIHtcblx0XHRcdFx0XHRcdHJlamVjdCgnQ291bGQgbm90IGZpbmQgZmlsZScpO1xuXHRcdFx0XHRcdH1cblx0XHRcblx0XHRcdFx0XHRsZXQgZGVsUGFyYW1zID0ge0J1Y2tldDogdGhpcy5zZXJ2ZXJDb25maWdbJ0FXU0JVQ0tFVCddLCBLZXk6IGZpbGUua2V5fTtcblx0XHRcblx0XHRcdFx0XHR0aGlzLmdldEFXUygpLmRlbGV0ZU9iamVjdChkZWxQYXJhbXMsIGZ1bmN0aW9uKGVyciwgcmVzKSB7XG5cdFx0XHRcdFx0XHRpZiAoZXJyKSB7XG5cdFx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHJlc29sdmUocmVzKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdEZpbGVzLmRlbGV0ZU9uZSh7X2lkOiBmaWxlLl9pZH0pLmV4ZWMoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRnZXRTaWduZWRVcmxXaXRoSWQ6IHtcblx0XHRcdHNraXBRdWV1ZTogdHJ1ZSxcblx0XHRcdGNoZWNrOiBuZXcgU2ltcGxlU2NoZW1hKHtcblx0XHRcdFx0aWRfZmlsZToge1xuXHRcdFx0XHRcdHR5cGU6IFN0cmluZ1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRleHBpcmVzOiB7XG5cdFx0XHRcdFx0dHlwZTogTnVtYmVyXG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0ZnVuY3Rpb246IGZ1bmN0aW9uKGlkX2ZpbGU6IHN0cmluZywgZXhwaXJlczogbnVtYmVyKSB7XG5cdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHRcdFx0bGV0IGZpbGUgPSBhd2FpdCBGaWxlcy5maW5kT25lKHtfaWQ6IGlkX2ZpbGV9KTtcblx0XHRcdFx0XHRsZXQgcGFyYW1zID0ge0J1Y2tldDogdGhpcy5zZXJ2ZXJDb25maWcuQVdTQlVDS0VULCBLZXk6IGZpbGUua2V5LCBFeHBpcmVzOiBleHBpcmVzfTtcblxuXHRcdFx0XHRcdHRoaXMuZ2V0QVdTKCkuZ2V0U2lnbmVkVXJsKCdnZXRPYmplY3QnLCBwYXJhbXMsIChlcnIsIHJlcykgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKGVycikge1xuXHRcdFx0XHRcdFx0XHRyZWplY3QoZXJyKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJlcyk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0Z2V0U2lnbmVkVXJsOiB7XG5cdFx0XHRza2lwUXVldWU6IHRydWUsXG5cdFx0XHRjaGVjazogbmV3IFNpbXBsZVNjaGVtYSh7XG5cdFx0XHRcdGtleToge1xuXHRcdFx0XHRcdHR5cGU6IFN0cmluZ1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRleHBpcmVzOiB7XG5cdFx0XHRcdFx0dHlwZTogTnVtYmVyXG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0ZnVuY3Rpb246IGZ1bmN0aW9uKGtleTogc3RyaW5nLCBleHBpcmVzOiBudW1iZXIpIHtcblx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdFx0XHRsZXQgcGFyYW1zID0ge0J1Y2tldDogdGhpcy5zZXJ2ZXJDb25maWcuQVdTQlVDS0VULCBLZXk6IGtleSwgRXhwaXJlczogZXhwaXJlc307XG5cblx0XHRcdFx0XHR0aGlzLmdldEFXUygpLmdldFNpZ25lZFVybCgnZ2V0T2JqZWN0JywgcGFyYW1zLCAoZXJyLCByZXMpID0+IHtcblx0XHRcdFx0XHRcdGlmIChlcnIpIHtcblx0XHRcdFx0XHRcdFx0cmVqZWN0KGVycik7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXMpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdGdldFNpZ25lZFVybHM6IHtcblx0XHRcdHNraXBRdWV1ZTogdHJ1ZSxcblx0XHRcdGNoZWNrOiBuZXcgU2ltcGxlU2NoZW1hKHtcblx0XHRcdFx0a2V5czoge1xuXHRcdFx0XHRcdHR5cGU6IEFycmF5XG5cdFx0XHRcdH0sXG5cdFx0XHRcdCdrZXlzLiQnOiB7XG5cdFx0XHRcdFx0dHlwZTogU3RyaW5nXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGV4cGlyZXM6IHtcblx0XHRcdFx0XHR0eXBlOiBOdW1iZXJcblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHRmdW5jdGlvbjogZnVuY3Rpb24oa2V5czogc3RyaW5nW10sIGV4cGlyZXM6IG51bWJlcikge1xuXHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0XHRcdGxldCByZXMgPSBbXTtcblxuXHRcdFx0XHRcdGtleXMuZm9yRWFjaChrZXkgPT4ge1xuXHRcdFx0XHRcdFx0bGV0IHBhcmFtcyA9IHtCdWNrZXQ6IHRoaXMuc2VydmVyQ29uZmlnLkFXU0JVQ0tFVCwgS2V5OiBrZXksIEV4cGlyZXM6IGV4cGlyZXN9O1xuXG5cdFx0XHRcdFx0XHRyZXMucHVzaCh0aGlzLmdldEFXUygpLmdldFNpZ25lZFVybCgnZ2V0T2JqZWN0JywgcGFyYW1zKSk7XG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRyZXNvbHZlKHJlcyk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0ZW1haWxGaWxlOiB7XG5cdFx0XHRza2lwUXVldWU6IHRydWUsXG5cdFx0XHRjaGVjazogbmV3IFNpbXBsZVNjaGVtYSh7XG5cdFx0XHRcdGlkX2ZpbGU6IHtcblx0XHRcdFx0XHR0eXBlOiBTdHJpbmdcblx0XHRcdFx0fSxcblx0XHRcdFx0ZW1haWw6IHtcblx0XHRcdFx0XHR0eXBlOiBTdHJpbmdcblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHRmdW5jdGlvbjogZnVuY3Rpb24oaWRfZmlsZTogc3RyaW5nLCBlbWFpbDogc3RyaW5nKSB7XG5cdFx0XHRcdGxldCB0aGF0ID0gdGhpcztcblxuXHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0XHRcdGxldCBmaWxlID0gYXdhaXQgRmlsZXMuZmluZEJ5SWQoaWRfZmlsZSk7XG5cblx0XHRcdFx0XHRpZiAoIWZpbGUpIHtcblx0XHRcdFx0XHRcdHJlamVjdCgnQ291bGQgbm90IGZpbmQgZmlsZScpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHRoYXQuY2FsbE1ldGhvZEludGVybmFsLmNhbGwodGhhdCwgJ2dldFNpZ25lZFVybCcsIGZpbGUua2V5LCA5MDAsIChlcnJQREYsIHJlc1BERikgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKHJlc1BERikge1xuXHRcdFx0XHRcdFx0XHR0aGF0LnNlbmRFbWFpbChlbWFpbCwgUmVzb2x2ZUlPU2VydmVyLmdldENsaWVudE5hbWUoKSArICcgRmlsZSAtICcgKyBmaWxlLm5hbWUsICdBdHRhY2hlZCBpcyB0aGUgZmlsZSByZXF1ZXN0ZWQgZm9yIGVtYWlsLicsICcnLCBbe1xuXHRcdFx0XHRcdFx0XHRcdGZpbGVuYW1lOiBmaWxlLm5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0cGF0aDogcmVzUERGXG5cdFx0XHRcdFx0XHRcdH1dKTtcblxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKHRydWUpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHJlamVjdCgnQ291bGQgbm90IGdldCBmaWxlIFVSTCcpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xufSJdfQ==
@@ -1 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var request=require("request");function loadCloudConvertMethods(e){e.methods({getCCProcessURL:{skipQueue:!0,function:function(){var e=this;return new Promise(function(r,n){request({method:"POST",url:"https://api.cloudconvert.com/process",headers:{"Content-Type":"application/json; charset=UTF-8"},json:{apikey:e.serverConfig.CLOUDCONVERT,mode:"combine",inputformat:"pdf",outputformat:"pdf"}},function(e,o,t){e?(console.log("Error happened: "+e),n(e)):r(t)})})}}})}exports.loadCloudConvertMethods=loadCloudConvertMethods;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var request=require("request");function loadCloudConvertMethods(e){e.methods({getCCProcessURL:{skipQueue:!0,function:function(){var e=this;return new Promise(function(r,n){request({method:"POST",url:"https://api.cloudconvert.com/process",headers:{"Content-Type":"application/json; charset=UTF-8"},json:{apikey:e.serverConfig.CLOUDCONVERT,mode:"combine",inputformat:"pdf",outputformat:"pdf"}},function(e,o,t){e?(console.log("Error happened: "+e),n(e)):r(t)})})}}})}exports.loadCloudConvertMethods=loadCloudConvertMethods;
2
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZXRob2RzL2Nsb3VkY29udmVydC50cyJdLCJuYW1lcyI6WyJyZXF1ZXN0IiwicmVxdWlyZSIsImxvYWRDbG91ZENvbnZlcnRNZXRob2RzIiwibWV0aG9kTWFuYWdlciIsIm1ldGhvZHMiLCJnZXRDQ1Byb2Nlc3NVUkwiLCJza2lwUXVldWUiLCJmdW5jdGlvbiIsIl90aGlzIiwidGhpcyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwibWV0aG9kIiwidXJsIiwiaGVhZGVycyIsIkNvbnRlbnQtVHlwZSIsImpzb24iLCJhcGlrZXkiLCJzZXJ2ZXJDb25maWciLCJtb2RlIiwiaW5wdXRmb3JtYXQiLCJvdXRwdXRmb3JtYXQiLCJlcnJvciIsInJlc3BvbnNlIiwiYm9keSIsImNvbnNvbGUiLCJsb2ciLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoib0VBQ0EsSUFBQUEsUUFBQUMsUUFBQSxXQUVBLFNBQWdCQyx3QkFBd0JDLEdBQ3ZDQSxFQUFjQyxRQUFRLENBQ3JCQyxnQkFBaUIsQ0FDaEJDLFdBQVcsRUFDWEMsU0FBVSxXQUFBLElBQUFDLEVBQUFDLEtBQ1QsT0FBTyxJQUFJQyxRQUFRLFNBQUNDLEVBQVNDLEdBQzVCWixRQUFRLENBQ1BhLE9BQVEsT0FDUkMsSUFBSyx1Q0FDTEMsUUFBUyxDQUNSQyxlQUFnQixtQ0FFakJDLEtBQU0sQ0FDTEMsT0FBVVYsRUFBS1csYUFBMkIsYUFDMUNDLEtBQVEsVUFDUkMsWUFBZSxNQUNmQyxhQUFnQixRQUVmLFNBQUVDLEVBQU9DLEVBQVVDLEdBQ2hCRixHQUlKRyxRQUFRQyxJQUFJLG1CQUFxQkosR0FDakNYLEVBQU9XLElBSlBaLEVBQVFjLFdBcEJmRyxRQUFBMUIsd0JBQUFBIiwiZmlsZSI6Im1ldGhvZHMvY2xvdWRjb252ZXJ0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWV0aG9kTWFuYWdlciB9IGZyb20gJy4uL21hbmFnZXJzL21ldGhvZC5tYW5hZ2VyJztcbmltcG9ydCAqIGFzIHJlcXVlc3QgZnJvbSAncmVxdWVzdCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQ2xvdWRDb252ZXJ0TWV0aG9kcyhtZXRob2RNYW5hZ2VyOiBNZXRob2RNYW5hZ2VyKSB7XG5cdG1ldGhvZE1hbmFnZXIubWV0aG9kcyh7XG5cdFx0Z2V0Q0NQcm9jZXNzVVJMOiB7XG5cdFx0XHRza2lwUXVldWU6IHRydWUsXG5cdFx0XHRmdW5jdGlvbjogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHRcdFx0cmVxdWVzdCh7XG5cdFx0XHRcdFx0XHRtZXRob2Q6ICdQT1NUJyxcblx0XHRcdFx0XHRcdHVybDogJ2h0dHBzOi8vYXBpLmNsb3VkY29udmVydC5jb20vcHJvY2VzcycsXG5cdFx0XHRcdFx0XHRoZWFkZXJzOiB7XG5cdFx0XHRcdFx0XHRcdCdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD1VVEYtOCdcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRqc29uOiB7XG5cdFx0XHRcdFx0XHRcdCdhcGlrZXknOiB0aGlzLnNlcnZlckNvbmZpZ1snQ0xPVURDT05WRVJUJ10sXG5cdFx0XHRcdFx0XHRcdCdtb2RlJzogJ2NvbWJpbmUnLFxuXHRcdFx0XHRcdFx0XHQnaW5wdXRmb3JtYXQnOiAncGRmJyxcblx0XHRcdFx0XHRcdFx0J291dHB1dGZvcm1hdCc6ICdwZGYnXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSwgKChlcnJvciwgcmVzcG9uc2UsIGJvZHkpID0+IHtcblx0XHRcdFx0XHRcdGlmICghZXJyb3IpIHtcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShib2R5KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnRXJyb3IgaGFwcGVuZWQ6ICcgKyBlcnJvcik7XG5cdFx0XHRcdFx0XHRcdHJlamVjdChlcnJvcik7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSkpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xufSJdfQ==
@@ -1 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var mongoose_1=require("mongoose"),common_1=require("../util/common"),simpl_schema_1=require("simpl-schema"),pagination_model_1=require("../models/pagination.model"),log_collection_1=require("../collections/log.collection"),index_1=require("../index");function loadCollectionMethods(e){e.methods({findOne:{skipQueue:!0,check:new simpl_schema_1.default({collection:{type:String},query:{type:Object,blackbox:!0}}),function:function(e,o){return index_1.default.getMainDB().model(e).findOne(o).exec()}},find:{skipQueue:!0,check:new simpl_schema_1.default({collection:{type:String},query:{type:Object,blackbox:!0},sort:{type:Object,blackbox:!0,optional:!0}}),function:function(e,o,t){return void 0===t&&(t={}),index_1.default.getMainDB().model(e).find(o).sort(t).exec()}},findWithOptions:{skipQueue:!0,check:new simpl_schema_1.default({collection:{type:String},query:{type:Object,blackbox:!0},options:{type:pagination_model_1.PaginationOptionsSchema}}),function:function(e,o,t){return index_1.default.getMainDB().model(e).find(o).sort(t.sort).limit(t.limit).skip(t.skip).select(t.fields).exec()}},insertDocument:{check:new simpl_schema_1.default({collection:{type:String},document:{type:Object,blackbox:!0}}),function:function(i,d){var l=this;return new Promise(function(e,o){var t=null;try{index_1.default.getMainDB().model(i).simplschema.validate(d)}catch(e){t=e,l.callMethodInternal.call(l,"insertErrorLog","Schema Failed on insert - "+i,[t,d])}if(t)console.log(t),o("Schema Errors");else{common_1.getBinarySize(JSON.stringify(d))<2e5?log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Insert Document",message:"User: "+l.user+", Collection Type: "+i,payload:d,method:"insertDocument",user:l.user,messageId:""}):log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Insert Document",message:"User: "+l.user+", Collection Type: "+i,payload:"Too Big",method:"insertDocument",user:l.user,messageId:""});var n=mongoose_1.Types.ObjectId().toHexString();d._id=n,d.__v=0,index_1.default.getMainDB().model(i).create(d).then(function(){return e(n)},function(e){return o(e)})}})}},updateDocument:{check:new simpl_schema_1.default({collection:{type:String},f_document:{type:Object,blackbox:!0}}),function:function(c,_){var i=this;return new Promise(function(l,a){index_1.default.getMainDB().model(c).findOne({_id:_._id}).lean().exec(function(e,d){if(d)if(d.__v===_.__v){var o=common_1.deepCopy(d);o._id={_id:d._id,__v:d.__v};var t=null;try{index_1.default.getMainDB().model(c).simplschema.validate(_)}catch(e){t=e,i.callMethodInternal.call(i,"insertErrorLog","Schema Failed on updateDocument - "+c,[t,_])}if(t)console.log(t),a("Schema Errors");else{index_1.default.getMainDB().model(index_1.default.getMainDB().model(c).versionCollection).create(o).then(function(e){index_1.default.getMainDB().model(index_1.default.getMainDB().model(c).versionCollection).deleteMany({$and:[{"_id._id":d._id},{"_id.__v":{$lte:d.__v-4}}]}).exec()},function(e){console.log(e)});var n=common_1.getMongoUpdates(d,_,!0);n?index_1.default.getMainDB().model(c).updateOne({_id:_._id},n,{strict:!1}).exec().then(function(e){l(e.nModified)},function(e){return a(e)}):l(1),common_1.getBinarySize(JSON.stringify(_))<2e5?log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Update Document",message:"User: "+i.user+", Collection Type: "+c,payload:_,method:"updateDocument",user:i.user,messageId:""}):log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Update Document",message:"User: "+i.user+", Collection Type: "+c,payload:"Too Big",method:"updateDocument",user:i.user,messageId:""})}}else console.log("invalid version - "+c,d.__v,_.__v),index_1.default.getMainDB().model(index_1.default.getMainDB().model(c).versionCollection).findOne({$and:[{"_id._id":d._id},{"_id.__v":_.__v}]}).lean().exec(function(e,o){var t=d._id;if(o){var n=common_1.deepCopy(d);n._id={_id:d._id,__v:d.__v};var i=common_1.getMongoMergeUpdatedDoc(_,d,o);i._id=t,i.__v++,index_1.default.getMainDB().model(c).replaceOne({_id:t},i).exec().then(function(o){index_1.default.getMainDB().model(index_1.default.getMainDB().model(c).versionCollection).create(n).then(function(e){index_1.default.getMainDB().model(index_1.default.getMainDB().model(c).versionCollection).deleteMany({$and:[{"_id._id":n._id._id},{"_id.__v":{$lte:n._id.__v-4}}]}).exec(),l(o.nModified)})},function(e){return a(e)})}else a("Invalid Version And Could Not Find History - DB: "+d.__v+", Trying to update with :"+_.__v)});else a(e)})})}},updateDocumentProps:{check:new simpl_schema_1.default({collection:{type:String},doc_id:{type:String},updateParams:{type:Array},"updateParams.$":{type:Object,blackbox:!0},doc__v:{type:Number}}),function:function(_,i,r,s){var u=this;return new Promise(function(a,c){index_1.default.getMainDB().model(_).findOne({_id:i}).lean().exec(function(e,d){if(d){var l=common_1.deepCopy(d);if(r.forEach(function(e){l[e.prop]=e.data}),l.__v===s){var o=common_1.deepCopy(d);o._id={_id:d._id,__v:d.__v};var t=null;try{index_1.default.getMainDB().model(_).simplschema.validate(l)}catch(e){t=e,u.callMethodInternal.call(u,"insertErrorLog","Schema Failed on updateDocumentProps - "+_,[t,l])}if(t)console.log(t),c("Schema Errors");else{index_1.default.getMainDB().model(index_1.default.getMainDB().model(_).versionCollection).create(o).then(function(e){index_1.default.getMainDB().model(index_1.default.getMainDB().model(_).versionCollection).deleteMany({$and:[{"_id._id":d._id},{"_id.__v":{$lte:d.__v-4}}]}).exec()},function(e){console.log(e)});var n=common_1.getMongoUpdates(d,l,!0);n?index_1.default.getMainDB().model(_).updateOne({_id:l._id},n,{strict:!1}).exec().then(function(e){a(e.ok)},function(e){return c(e)}):a(1),common_1.getBinarySize(JSON.stringify(r))<2e5?log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Update Document Props",message:"User: "+u.user+", Collection Type: "+_+", Id: "+i+", Version: "+s,payload:r,method:"updateDocumentProps",user:u.user,messageId:""}):log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Update Document Props",message:"User: "+u.user+", Collection Type: "+_+", Id: "+i+", Version: "+s,payload:"Too Big",method:"updateDocumentProps",user:u.user,messageId:""})}}else console.log("invalid version - "+_,d.__v,s),index_1.default.getMainDB().model(index_1.default.getMainDB().model(_).versionCollection).findOne({$and:[{"_id._id":d._id},{"_id.__v":s}]}).lean().exec(function(e,o){var t=d._id;if(o){var n=common_1.deepCopy(d);n._id={_id:d._id,__v:d.__v};var i=common_1.getMongoMergeUpdatedDoc(l,d,o);i._id=t,i.__v++,index_1.default.getMainDB().model(_).replaceOne({_id:t},i).exec().then(function(e){index_1.default.getMainDB().model(index_1.default.getMainDB().model(_).versionCollection).create(n).then(function(e){index_1.default.getMainDB().model(index_1.default.getMainDB().model(_).versionCollection).deleteMany({$and:[{"_id._id":n._id._id},{"_id.__v":{$lte:n._id.__v-4}}]}).exec()},function(e){console.log(e)}),a(e.nModified)},function(e){return c(e)})}else c("Invalid Version And Could Not Find History Props - DB: "+d.__v+", Trying to update with :"+l.__v)})}else c(e)})})}},updateDocumentOffline:{check:new simpl_schema_1.default({collection:{type:String},f_document:{type:Object,blackbox:!0},f_oldDocument:{type:Object,blackbox:!0}}),function:function(r,s,u){var m=this;return new Promise(function(c,_){index_1.default.getMainDB().model(r).findOne({_id:s._id}).lean().exec(function(e,o){if(o)if(o.__v===s.__v){var t=common_1.deepCopy(o);t._id={_id:o._id,__v:o.__v};var n=null;try{index_1.default.getMainDB().model(r).simplschema.validate(s)}catch(e){n=e,m.callMethodInternal.call(m,"insertErrorLog","Schema Failed on updateDocument - "+r,[n,s])}if(n)console.log(n),_("Schema Errors");else{index_1.default.getMainDB().model(index_1.default.getMainDB().model(r).versionCollection).create(t).then(function(e){index_1.default.getMainDB().model(index_1.default.getMainDB().model(r).versionCollection).deleteMany({$and:[{"_id._id":o._id},{"_id.__v":{$lte:o.__v-4}}]}).exec()},function(e){console.log(e)});var i=common_1.getMongoUpdates(o,s,!0);i?index_1.default.getMainDB().model(r).updateOne({_id:s._id},i,{strict:!1}).exec().then(function(e){c(e.nModified)},function(e){return _(e)}):c(1),common_1.getBinarySize(JSON.stringify(s))<2e5?log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Update Document",message:"User: "+m.user+", Collection Type: "+r,payload:s,method:"updateDocumentOffline",user:m.user,messageId:""}):log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Update Document",message:"User: "+m.user+", Collection Type: "+r,payload:"Too Big",method:"updateDocumentOffline",user:m.user,messageId:""})}}else{console.log("invalid version - "+r,o.__v,s.__v);var d=o._id;if(u){var l=common_1.deepCopy(o);l._id={_id:o._id,__v:o.__v};var a=common_1.getMongoMergeUpdatedDoc(s,o,u);a._id=d,a.__v++,index_1.default.getMainDB().model(r).replaceOne({_id:d},a).exec().then(function(e){index_1.default.getMainDB().model(index_1.default.getMainDB().model(r).versionCollection).create(l).then(function(e){index_1.default.getMainDB().model(index_1.default.getMainDB().model(r).versionCollection).deleteMany({$and:[{"_id._id":l._id._id},{"_id.__v":{$lte:l._id.__v-4}}]}).exec()},function(e){console.log(e)}),c(e.nModified)},function(e){return _(e)})}else _("OFFLINE - Invalid Version And Could Not Find History - DB: "+o.__v+", Trying to update with :"+s.__v)}else _(e)})})}},updateDocumentPropsOffline:{check:new simpl_schema_1.default({collection:{type:String},doc_id:{type:String},updateParams:{type:Array},"updateParams.$":{type:Object,blackbox:!0},doc__v:{type:Number},f_oldDocument:{type:Object,blackbox:!0}}),function:function(s,u,m,g,f){var p=this;return new Promise(function(_,r){index_1.default.getMainDB().model(s).findOne({_id:u}).lean().exec(function(e,o){if(o){var t=common_1.deepCopy(o);if(m.forEach(function(e){t[e.prop]=e.data}),t.__v===g){var n=common_1.deepCopy(o);n._id={_id:o._id,__v:o.__v};var i=null;try{index_1.default.getMainDB().model(s).simplschema.validate(t)}catch(e){i=e,p.callMethodInternal.call(p,"insertErrorLog","Schema Failed on updateDocumentProps - "+s,[i,t])}if(i)console.log(i),r("Schema Errors");else{index_1.default.getMainDB().model(index_1.default.getMainDB().model(s).versionCollection).create(n).then(function(e){index_1.default.getMainDB().model(index_1.default.getMainDB().model(s).versionCollection).deleteMany({$and:[{"_id._id":o._id},{"_id.__v":{$lte:o.__v-4}}]}).exec()},function(e){console.log(e)});var d=common_1.getMongoUpdates(o,t,!0);d?index_1.default.getMainDB().model(s).updateOne({_id:t._id},d,{strict:!1}).exec().then(function(e){_(e.ok)},function(e){return r(e)}):_(1),common_1.getBinarySize(JSON.stringify(m))<2e5?log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Update Document Props",message:"User: "+p.user+", Collection Type: "+s+", Id: "+u+", Version: "+g,payload:m,method:"updateDocumentPropsOffline",user:p.user,messageId:""}):log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Update Document Props",message:"User: "+p.user+", Collection Type: "+s+", Id: "+u+", Version: "+g,payload:"Too Big",method:"updateDocumentPropsOffline",user:p.user,messageId:""})}}else{console.log("invalid version - "+s,o.__v,g);var l=o._id;if(f){var a=common_1.deepCopy(o);a._id={_id:o._id,__v:o.__v};var c=common_1.getMongoMergeUpdatedDoc(t,o,f);c._id=l,c.__v++,index_1.default.getMainDB().model(s).replaceOne({_id:l},c).exec().then(function(e){index_1.default.getMainDB().model(index_1.default.getMainDB().model(s).versionCollection).create(a).then(function(e){index_1.default.getMainDB().model(index_1.default.getMainDB().model(s).versionCollection).deleteMany({$and:[{"_id._id":a._id._id},{"_id.__v":{$lte:a._id.__v-4}}]}).exec()},function(e){console.log(e)}),_(e.nModified)},function(e){return r(e)})}else r("OFFLINE - Invalid Version And Could Not Find History Props - DB: "+o.__v+", Trying to update with :"+t.__v)}}else r(e)})})}},removeDocument:{check:new simpl_schema_1.default({collection:{type:String},doc_id:{type:String}}),function:function(e,o){var i=this;return new Promise(function(t,n){log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Remove Document",message:"User: "+i.user+", Collection Type: "+e,payload:{_id:o},method:"removeDocument",user:i.user,messageId:""}),index_1.default.getMainDB().model(e).deleteOne({_id:o}).exec(function(e,o){e?n(e):t(o.ok)})})}},removeDocumentWithQuery:{check:new simpl_schema_1.default({collection:{type:String},query:{type:Object,blackbox:!0}}),function:function(e,o){var i=this;return new Promise(function(t,n){log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Remove Document (Query)",message:"User: "+i.user+", Collection Type: "+e,payload:{_id:o},method:"removeDocumentWithQuery",user:i.user,messageId:""}),index_1.default.getMainDB().model(e).deleteOne(o).exec(function(e,o){e?n(e):t(o.ok)})})}}})}exports.loadCollectionMethods=loadCollectionMethods;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var mongoose_1=require("mongoose"),common_1=require("../util/common"),simpl_schema_1=require("simpl-schema"),pagination_model_1=require("../models/pagination.model"),log_collection_1=require("../collections/log.collection"),index_1=require("../index");function loadCollectionMethods(e){e.methods({findOne:{skipQueue:!0,check:new simpl_schema_1.default({collection:{type:String},query:{type:Object,blackbox:!0}}),function:function(e,o){return index_1.default.getMainDB().model(e).findOne(o).exec()}},find:{skipQueue:!0,check:new simpl_schema_1.default({collection:{type:String},query:{type:Object,blackbox:!0},sort:{type:Object,blackbox:!0,optional:!0}}),function:function(e,o,t){return void 0===t&&(t={}),index_1.default.getMainDB().model(e).find(o).sort(t).exec()}},findWithOptions:{skipQueue:!0,check:new simpl_schema_1.default({collection:{type:String},query:{type:Object,blackbox:!0},options:{type:pagination_model_1.PaginationOptionsSchema}}),function:function(e,o,t){return index_1.default.getMainDB().model(e).find(o).sort(t.sort).limit(t.limit).skip(t.skip).select(t.fields).exec()}},insertDocument:{check:new simpl_schema_1.default({collection:{type:String},document:{type:Object,blackbox:!0}}),function:function(i,d){var l=this;return new Promise(function(e,o){var t=null;try{index_1.default.getMainDB().model(i).simplschema.validate(d)}catch(e){t=e,l.callMethodInternal.call(l,"insertErrorLog","Schema Failed on insert - "+i,[t,d])}if(t)console.log(t),o("Schema Errors");else{common_1.getBinarySize(JSON.stringify(d))<2e5?log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Insert Document",message:"User: "+l.user+", Collection Type: "+i,payload:d,method:"insertDocument",user:l.user,messageId:""}):log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Insert Document",message:"User: "+l.user+", Collection Type: "+i,payload:"Too Big",method:"insertDocument",user:l.user,messageId:""});var n=mongoose_1.Types.ObjectId().toHexString();d._id=n,d.__v=0,index_1.default.getMainDB().model(i).create(d).then(function(){return e(n)},function(e){return o(e)})}})}},updateDocument:{check:new simpl_schema_1.default({collection:{type:String},f_document:{type:Object,blackbox:!0}}),function:function(c,_){var i=this;return new Promise(function(l,a){index_1.default.getMainDB().model(c).findOne({_id:_._id}).lean().exec(function(e,d){if(d)if(d.__v===_.__v){var o=common_1.deepCopy(d);o._id={_id:d._id,__v:d.__v};var t=null;try{index_1.default.getMainDB().model(c).simplschema.validate(_)}catch(e){t=e,i.callMethodInternal.call(i,"insertErrorLog","Schema Failed on updateDocument - "+c,[t,_])}if(t)console.log(t),a("Schema Errors");else{index_1.default.getMainDB().model(index_1.default.getMainDB().model(c).versionCollection).create(o).then(function(e){index_1.default.getMainDB().model(index_1.default.getMainDB().model(c).versionCollection).deleteMany({$and:[{"_id._id":d._id},{"_id.__v":{$lte:d.__v-4}}]}).exec()},function(e){console.log(e)});var n=common_1.getMongoUpdates(d,_,!0);n?index_1.default.getMainDB().model(c).updateOne({_id:_._id},n,{strict:!1}).exec().then(function(e){l(e.nModified)},function(e){return a(e)}):l(1),common_1.getBinarySize(JSON.stringify(_))<2e5?log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Update Document",message:"User: "+i.user+", Collection Type: "+c,payload:_,method:"updateDocument",user:i.user,messageId:""}):log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Update Document",message:"User: "+i.user+", Collection Type: "+c,payload:"Too Big",method:"updateDocument",user:i.user,messageId:""})}}else console.log("invalid version - "+c,d.__v,_.__v),index_1.default.getMainDB().model(index_1.default.getMainDB().model(c).versionCollection).findOne({$and:[{"_id._id":d._id},{"_id.__v":_.__v}]}).lean().exec(function(e,o){var t=d._id;if(o){var n=common_1.deepCopy(d);n._id={_id:d._id,__v:d.__v};var i=common_1.getMongoMergeUpdatedDoc(_,d,o);i._id=t,i.__v++,index_1.default.getMainDB().model(c).replaceOne({_id:t},i).exec().then(function(o){index_1.default.getMainDB().model(index_1.default.getMainDB().model(c).versionCollection).create(n).then(function(e){index_1.default.getMainDB().model(index_1.default.getMainDB().model(c).versionCollection).deleteMany({$and:[{"_id._id":n._id._id},{"_id.__v":{$lte:n._id.__v-4}}]}).exec(),l(o.nModified)})},function(e){return a(e)})}else a("Invalid Version And Could Not Find History - DB: "+d.__v+", Trying to update with :"+_.__v)});else a(e)})})}},updateDocumentProps:{check:new simpl_schema_1.default({collection:{type:String},doc_id:{type:String},updateParams:{type:Array},"updateParams.$":{type:Object,blackbox:!0},doc__v:{type:Number}}),function:function(_,i,r,s){var u=this;return new Promise(function(a,c){index_1.default.getMainDB().model(_).findOne({_id:i}).lean().exec(function(e,d){if(d){var l=common_1.deepCopy(d);if(r.forEach(function(e){l[e.prop]=e.data}),l.__v===s){var o=common_1.deepCopy(d);o._id={_id:d._id,__v:d.__v};var t=null;try{index_1.default.getMainDB().model(_).simplschema.validate(l)}catch(e){t=e,u.callMethodInternal.call(u,"insertErrorLog","Schema Failed on updateDocumentProps - "+_,[t,l])}if(t)console.log(t),c("Schema Errors");else{index_1.default.getMainDB().model(index_1.default.getMainDB().model(_).versionCollection).create(o).then(function(e){index_1.default.getMainDB().model(index_1.default.getMainDB().model(_).versionCollection).deleteMany({$and:[{"_id._id":d._id},{"_id.__v":{$lte:d.__v-4}}]}).exec()},function(e){console.log(e)});var n=common_1.getMongoUpdates(d,l,!0);n?index_1.default.getMainDB().model(_).updateOne({_id:l._id},n,{strict:!1}).exec().then(function(e){a(e.ok)},function(e){return c(e)}):a(1),common_1.getBinarySize(JSON.stringify(r))<2e5?log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Update Document Props",message:"User: "+u.user+", Collection Type: "+_+", Id: "+i+", Version: "+s,payload:r,method:"updateDocumentProps",user:u.user,messageId:""}):log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Update Document Props",message:"User: "+u.user+", Collection Type: "+_+", Id: "+i+", Version: "+s,payload:"Too Big",method:"updateDocumentProps",user:u.user,messageId:""})}}else console.log("invalid version - "+_,d.__v,s),index_1.default.getMainDB().model(index_1.default.getMainDB().model(_).versionCollection).findOne({$and:[{"_id._id":d._id},{"_id.__v":s}]}).lean().exec(function(e,o){var t=d._id;if(o){var n=common_1.deepCopy(d);n._id={_id:d._id,__v:d.__v};var i=common_1.getMongoMergeUpdatedDoc(l,d,o);i._id=t,i.__v++,index_1.default.getMainDB().model(_).replaceOne({_id:t},i).exec().then(function(e){index_1.default.getMainDB().model(index_1.default.getMainDB().model(_).versionCollection).create(n).then(function(e){index_1.default.getMainDB().model(index_1.default.getMainDB().model(_).versionCollection).deleteMany({$and:[{"_id._id":n._id._id},{"_id.__v":{$lte:n._id.__v-4}}]}).exec()},function(e){console.log(e)}),a(e.nModified)},function(e){return c(e)})}else c("Invalid Version And Could Not Find History Props - DB: "+d.__v+", Trying to update with :"+l.__v)})}else c(e)})})}},updateDocumentOffline:{check:new simpl_schema_1.default({collection:{type:String},f_document:{type:Object,blackbox:!0},f_oldDocument:{type:Object,blackbox:!0}}),function:function(r,s,u){var m=this;return new Promise(function(c,_){index_1.default.getMainDB().model(r).findOne({_id:s._id}).lean().exec(function(e,o){if(o)if(o.__v===s.__v){var t=common_1.deepCopy(o);t._id={_id:o._id,__v:o.__v};var n=null;try{index_1.default.getMainDB().model(r).simplschema.validate(s)}catch(e){n=e,m.callMethodInternal.call(m,"insertErrorLog","Schema Failed on updateDocument - "+r,[n,s])}if(n)console.log(n),_("Schema Errors");else{index_1.default.getMainDB().model(index_1.default.getMainDB().model(r).versionCollection).create(t).then(function(e){index_1.default.getMainDB().model(index_1.default.getMainDB().model(r).versionCollection).deleteMany({$and:[{"_id._id":o._id},{"_id.__v":{$lte:o.__v-4}}]}).exec()},function(e){console.log(e)});var i=common_1.getMongoUpdates(o,s,!0);i?index_1.default.getMainDB().model(r).updateOne({_id:s._id},i,{strict:!1}).exec().then(function(e){c(e.nModified)},function(e){return _(e)}):c(1),common_1.getBinarySize(JSON.stringify(s))<2e5?log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Update Document",message:"User: "+m.user+", Collection Type: "+r,payload:s,method:"updateDocumentOffline",user:m.user,messageId:""}):log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Update Document",message:"User: "+m.user+", Collection Type: "+r,payload:"Too Big",method:"updateDocumentOffline",user:m.user,messageId:""})}}else{console.log("invalid version - "+r,o.__v,s.__v);var d=o._id;if(u){var l=common_1.deepCopy(o);l._id={_id:o._id,__v:o.__v};var a=common_1.getMongoMergeUpdatedDoc(s,o,u);a._id=d,a.__v++,index_1.default.getMainDB().model(r).replaceOne({_id:d},a).exec().then(function(e){index_1.default.getMainDB().model(index_1.default.getMainDB().model(r).versionCollection).create(l).then(function(e){index_1.default.getMainDB().model(index_1.default.getMainDB().model(r).versionCollection).deleteMany({$and:[{"_id._id":l._id._id},{"_id.__v":{$lte:l._id.__v-4}}]}).exec()},function(e){console.log(e)}),c(e.nModified)},function(e){return _(e)})}else _("OFFLINE - Invalid Version And Could Not Find History - DB: "+o.__v+", Trying to update with :"+s.__v)}else _(e)})})}},updateDocumentPropsOffline:{check:new simpl_schema_1.default({collection:{type:String},doc_id:{type:String},updateParams:{type:Array},"updateParams.$":{type:Object,blackbox:!0},doc__v:{type:Number},f_oldDocument:{type:Object,blackbox:!0}}),function:function(s,u,m,g,f){var p=this;return new Promise(function(_,r){index_1.default.getMainDB().model(s).findOne({_id:u}).lean().exec(function(e,o){if(o){var t=common_1.deepCopy(o);if(m.forEach(function(e){t[e.prop]=e.data}),t.__v===g){var n=common_1.deepCopy(o);n._id={_id:o._id,__v:o.__v};var i=null;try{index_1.default.getMainDB().model(s).simplschema.validate(t)}catch(e){i=e,p.callMethodInternal.call(p,"insertErrorLog","Schema Failed on updateDocumentProps - "+s,[i,t])}if(i)console.log(i),r("Schema Errors");else{index_1.default.getMainDB().model(index_1.default.getMainDB().model(s).versionCollection).create(n).then(function(e){index_1.default.getMainDB().model(index_1.default.getMainDB().model(s).versionCollection).deleteMany({$and:[{"_id._id":o._id},{"_id.__v":{$lte:o.__v-4}}]}).exec()},function(e){console.log(e)});var d=common_1.getMongoUpdates(o,t,!0);d?index_1.default.getMainDB().model(s).updateOne({_id:t._id},d,{strict:!1}).exec().then(function(e){_(e.ok)},function(e){return r(e)}):_(1),common_1.getBinarySize(JSON.stringify(m))<2e5?log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Update Document Props",message:"User: "+p.user+", Collection Type: "+s+", Id: "+u+", Version: "+g,payload:m,method:"updateDocumentPropsOffline",user:p.user,messageId:""}):log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Update Document Props",message:"User: "+p.user+", Collection Type: "+s+", Id: "+u+", Version: "+g,payload:"Too Big",method:"updateDocumentPropsOffline",user:p.user,messageId:""})}}else{console.log("invalid version - "+s,o.__v,g);var l=o._id;if(f){var a=common_1.deepCopy(o);a._id={_id:o._id,__v:o.__v};var c=common_1.getMongoMergeUpdatedDoc(t,o,f);c._id=l,c.__v++,index_1.default.getMainDB().model(s).replaceOne({_id:l},c).exec().then(function(e){index_1.default.getMainDB().model(index_1.default.getMainDB().model(s).versionCollection).create(a).then(function(e){index_1.default.getMainDB().model(index_1.default.getMainDB().model(s).versionCollection).deleteMany({$and:[{"_id._id":a._id._id},{"_id.__v":{$lte:a._id.__v-4}}]}).exec()},function(e){console.log(e)}),_(e.nModified)},function(e){return r(e)})}else r("OFFLINE - Invalid Version And Could Not Find History Props - DB: "+o.__v+", Trying to update with :"+t.__v)}}else r(e)})})}},removeDocument:{check:new simpl_schema_1.default({collection:{type:String},doc_id:{type:String}}),function:function(e,o){var i=this;return new Promise(function(t,n){log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Remove Document",message:"User: "+i.user+", Collection Type: "+e,payload:{_id:o},method:"removeDocument",user:i.user,messageId:""}),index_1.default.getMainDB().model(e).deleteOne({_id:o}).exec(function(e,o){e?n(e):t(o.ok)})})}},removeDocumentWithQuery:{check:new simpl_schema_1.default({collection:{type:String},query:{type:Object,blackbox:!0}}),function:function(e,o){var i=this;return new Promise(function(t,n){log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Remove Document (Query)",message:"User: "+i.user+", Collection Type: "+e,payload:{_id:o},method:"removeDocumentWithQuery",user:i.user,messageId:""}),index_1.default.getMainDB().model(e).deleteOne(o).exec(function(e,o){e?n(e):t(o.ok)})})}}})}exports.loadCollectionMethods=loadCollectionMethods;
2
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZXRob2RzL2NvbGxlY3Rpb25zLnRzIl0sIm5hbWVzIjpbIm1vbmdvb3NlXzEiLCJyZXF1aXJlIiwiY29tbW9uXzEiLCJzaW1wbF9zY2hlbWFfMSIsInBhZ2luYXRpb25fbW9kZWxfMSIsImxvZ19jb2xsZWN0aW9uXzEiLCJpbmRleF8xIiwibG9hZENvbGxlY3Rpb25NZXRob2RzIiwibWV0aG9kTWFuYWdlciIsIm1ldGhvZHMiLCJmaW5kT25lIiwic2tpcFF1ZXVlIiwiY2hlY2siLCJkZWZhdWx0IiwiY29sbGVjdGlvbiIsInR5cGUiLCJTdHJpbmciLCJxdWVyeSIsIk9iamVjdCIsImJsYWNrYm94IiwiZnVuY3Rpb24iLCJnZXRNYWluREIiLCJtb2RlbCIsImV4ZWMiLCJmaW5kIiwic29ydCIsIm9wdGlvbmFsIiwic29ydFF1ZXJ5IiwiZmluZFdpdGhPcHRpb25zIiwib3B0aW9ucyIsIlBhZ2luYXRpb25PcHRpb25zU2NoZW1hIiwibGltaXQiLCJza2lwIiwic2VsZWN0IiwiZmllbGRzIiwiaW5zZXJ0RG9jdW1lbnQiLCJkb2N1bWVudCIsIl90aGlzIiwidGhpcyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0Iiwic2NoZW1hRXJyb3JzIiwidmFsaWRhdGUiLCJlcnJvcnMiLCJjYWxsTWV0aG9kSW50ZXJuYWwiLCJjYWxsIiwiY29uc29sZSIsImxvZyIsImdldEJpbmFyeVNpemUiLCJKU09OIiwic3RyaW5naWZ5IiwiTG9ncyIsImNyZWF0ZSIsIl9pZCIsIlR5cGVzIiwiT2JqZWN0SWQiLCJ0b0hleFN0cmluZyIsImRhdGUiLCJEYXRlIiwidGl0bGUiLCJtZXNzYWdlIiwidXNlciIsInBheWxvYWQiLCJtZXRob2QiLCJtZXNzYWdlSWQiLCJpZF8xIiwidGhlbiIsImVyciIsInVwZGF0ZURvY3VtZW50IiwiZl9kb2N1bWVudCIsImxlYW4iLCJlcnJEb2MiLCJjdXJyRG9jIiwiX192IiwidmVyc2lvbkRvYyIsImRlZXBDb3B5IiwiZG9jIiwiZGVsZXRlTWFueSIsIiRhbmQiLCJfaWQuX2lkIiwiX2lkLl9fdiIsIiRsdGUiLCJ1cGRhdGVzIiwiZ2V0TW9uZ29VcGRhdGVzIiwidXBkYXRlT25lIiwic3RyaWN0IiwicmVzIiwibk1vZGlmaWVkIiwiZXJyT2xkRG9jIiwib2xkRG9jIiwibmV3Q3VyckRvY0lkIiwidmVyc2lvbkRvY18xIiwidXBkYXRlZERvYyIsImdldE1vbmdvTWVyZ2VVcGRhdGVkRG9jIiwicmVwbGFjZU9uZSIsInVwZGF0ZURvY3VtZW50UHJvcHMiLCJkb2NfaWQiLCJ1cGRhdGVQYXJhbXMiLCJBcnJheSIsInVwZGF0ZVBhcmFtcy4kIiwiZG9jX192IiwiTnVtYmVyIiwibW9kaWZpZWREb2NfMSIsImZvckVhY2giLCJkYXRhIiwicHJvcCIsIm9rIiwidmVyc2lvbkRvY18yIiwidXBkYXRlRG9jdW1lbnRPZmZsaW5lIiwiZl9vbGREb2N1bWVudCIsInZlcnNpb25Eb2NfMyIsInVwZGF0ZURvY3VtZW50UHJvcHNPZmZsaW5lIiwibW9kaWZpZWREb2NfMiIsInZlcnNpb25Eb2NfNCIsInJlbW92ZURvY3VtZW50IiwiZGVsZXRlT25lIiwicmVtb3ZlRG9jdW1lbnRXaXRoUXVlcnkiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoib0VBQUEsSUFBQUEsV0FBQUMsUUFBQSxZQUVBQyxTQUFBRCxRQUFBLGtCQUNBRSxlQUFBRixRQUFBLGdCQUNBRyxtQkFBQUgsUUFBQSw4QkFDQUksaUJBQUFKLFFBQUEsaUNBQ0FLLFFBQUFMLFFBQUEsWUFFQSxTQUFnQk0sc0JBQXNCQyxHQUNyQ0EsRUFBY0MsUUFBUSxDQUVyQkMsUUFBUyxDQUNSQyxXQUFXLEVBQ1hDLE1BQU8sSUFBSVQsZUFBQVUsUUFBYSxDQUN2QkMsV0FBWSxDQUNYQyxLQUFNQyxRQUVQQyxNQUFPLENBQ05GLEtBQU1HLE9BQ05DLFVBQVUsS0FHWkMsU0FBVSxTQUFTTixFQUFvQkcsR0FDdEMsT0FBT1gsUUFBQU8sUUFBZ0JRLFlBQVlDLE1BQU1SLEdBQVlKLFFBQVFPLEdBQU9N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QUFPLENBQ1hDLElBQUt0RCxXQUFBdUQsTUFBTUMsV0FBV0MsY0FDdEJDLEtBQU0sSUFBSUMsS0FDVjVDLEtBQU0sT0FDTjZDLE1BQU8sMEJBQ1BDLFFBQVMsU0FBV3hCLEVBQUt5QixLQUFPLHNCQUF3QmhELEVBQ3hEaUQsUUFBUyxDQUFDVCxJQUFLckMsR0FDZitDLE9BQVEsMEJBQ1JGLEtBQU16QixFQUFLeUIsS0FDWEcsVUFBVyxLQUdaM0QsUUFBQU8sUUFBZ0JRLFlBQVlDLE1BQU1SLEdBQVlzRyxVQUFVbkcsR0FBT00sS0FBSyxTQUFDNkMsRUFBS21CLEdBQ3JFbkIsRUFDSDNCLEVBQU8yQixHQUdQNUIsRUFBUStDLEVBQUlvQixZQXp3Qm5CVyxRQUFBL0csc0JBQUFBIiwiZmlsZSI6Im1ldGhvZHMvY29sbGVjdGlvbnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEb2N1bWVudCwgVHlwZXN9IGZyb20gJ21vbmdvb3NlJztcbmltcG9ydCB7IE1ldGhvZE1hbmFnZXIgfSBmcm9tICcuLi9tYW5hZ2Vycy9tZXRob2QubWFuYWdlcic7XG5pbXBvcnQgeyBnZXRNb25nb1VwZGF0ZXMsIGRlZXBDb3B5LCBnZXRNb25nb01lcmdlVXBkYXRlZERvYywgZ2V0QmluYXJ5U2l6ZSB9IGZyb20gJy4uL3V0aWwvY29tbW9uJztcbmltcG9ydCBTaW1wbGVTY2hlbWEgZnJvbSAnc2ltcGwtc2NoZW1hJztcbmltcG9ydCB7IFBhZ2luYXRpb25PcHRpb25zU2NoZW1hLCBQYWdpbmF0aW9uT3B0aW9ucyB9IGZyb20gJy4uL21vZGVscy9wYWdpbmF0aW9uLm1vZGVsJztcbmltcG9ydCB7IExvZ3MgfSBmcm9tICcuLi9jb2xsZWN0aW9ucy9sb2cuY29sbGVjdGlvbic7XG5pbXBvcnQgUmVzb2x2ZUlPU2VydmVyIGZyb20gJy4uL2luZGV4JztcblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRDb2xsZWN0aW9uTWV0aG9kcyhtZXRob2RNYW5hZ2VyOiBNZXRob2RNYW5hZ2VyKSB7XG5cdG1ldGhvZE1hbmFnZXIubWV0aG9kcyh7XG5cdFx0Ly8gUXVlcnkgZGF0YWJhc2UgZm9yIGFueSBjb2xsZWN0aW9uIGFuZCBxdWVyeVxuXHRcdGZpbmRPbmU6IHtcblx0XHRcdHNraXBRdWV1ZTogdHJ1ZSxcblx0XHRcdGNoZWNrOiBuZXcgU2ltcGxlU2NoZW1hKHtcblx0XHRcdFx0Y29sbGVjdGlvbjoge1xuXHRcdFx0XHRcdHR5cGU6IFN0cmluZ1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRxdWVyeToge1xuXHRcdFx0XHRcdHR5cGU6IE9iamVjdCxcblx0XHRcdFx0XHRibGFja2JveDogdHJ1ZVxuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdGZ1bmN0aW9uOiBmdW5jdGlvbihjb2xsZWN0aW9uOiBzdHJpbmcsIHF1ZXJ5OiBPYmplY3QpIHtcblx0XHRcdFx0cmV0dXJuIFJlc29sdmVJT1NlcnZlci5nZXRNYWluREIoKS5tb2RlbChjb2xsZWN0aW9uKS5maW5kT25lKHF1ZXJ5KS5leGVjKCk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRmaW5kOiB7XG5cdFx0XHRza2lwUXVldWU6IHRydWUsXG5cdFx0XHRjaGVjazogbmV3IFNpbXBsZVNjaGVtYSh7XG5cdFx0XHRcdGNvbGxlY3Rpb246IHtcblx0XHRcdFx0XHR0eXBlOiBTdHJpbmdcblx0XHRcdFx0fSxcblx0XHRcdFx0cXVlcnk6IHtcblx0XHRcdFx0XHR0eXBlOiBPYmplY3QsXG5cdFx0XHRcdFx0YmxhY2tib3g6IHRydWVcblx0XHRcdFx0fSxcblx0XHRcdFx0c29ydDoge1xuXHRcdFx0XHRcdHR5cGU6IE9iamVjdCxcblx0XHRcdFx0XHRibGFja2JveDogdHJ1ZSxcblx0XHRcdFx0XHRvcHRpb25hbDogdHJ1ZVxuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdGZ1bmN0aW9uOiBmdW5jdGlvbihjb2xsZWN0aW9uOiBzdHJpbmcsIHF1ZXJ5OiBPYmplY3QsIHNvcnRRdWVyeTogT2JqZWN0ID0ge30pIHtcblx0XHRcdFx0cmV0dXJuIFJlc29sdmVJT1NlcnZlci5nZXRNYWluREIoKS5tb2RlbChjb2xsZWN0aW9uKS5maW5kKHF1ZXJ5KS5zb3J0KHNvcnRRdWVyeSkuZXhlYygpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0ZmluZFdpdGhPcHRpb25zOiB7XG5cdFx0XHRza2lwUXVldWU6IHRydWUsXG5cdFx0XHRjaGVjazogbmV3IFNpbXBsZVNjaGVtYSh7XG5cdFx0XHRcdGNvbGxlY3Rpb246IHtcblx0XHRcdFx0XHR0eXBlOiBTdHJpbmdcblx0XHRcdFx0fSxcblx0XHRcdFx0cXVlcnk6IHtcblx0XHRcdFx0XHR0eXBlOiBPYmplY3QsXG5cdFx0XHRcdFx0YmxhY2tib3g6IHRydWVcblx0XHRcdFx0fSxcblx0XHRcdFx0b3B0aW9uczoge1xuXHRcdFx0XHRcdHR5cGU6IFBhZ2luYXRpb25PcHRpb25zU2NoZW1hXG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0ZnVuY3Rpb246IGZ1bmN0aW9uKGNvbGxlY3Rpb246IHN0cmluZywgcXVlcnk6IE9iamVjdCwgb3B0aW9uczogUGFnaW5hdGlvbk9wdGlvbnMpIHtcblx0XHRcdFx0cmV0dXJuIFJlc29sdmVJT1NlcnZlci5nZXRNYWluREIoKS5tb2RlbChjb2xsZWN0aW9uKS5maW5kKHF1ZXJ5KS5zb3J0KG9wdGlvbnMuc29ydCkubGltaXQob3B0aW9ucy5saW1pdCkuc2tpcChvcHRpb25zLnNraXApLnNlbGVjdChvcHRpb25zLmZpZWxkcykuZXhlYygpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0Ly8gSW5zZXJ0IDEgZG9jdW1lbnRcblx0XHQvLyBASW5wdXRzOiBjb2xsZWN0aW9uLCBkb2N1bWVudFxuXHRcdC8vIEBPdXRwdXRzOiByZXMgPSBfaWQgb2YgbmV3IGRvY3VtZW50LCBlcnIgPSBub3QgaW5zZXJ0ZWRcblx0XHRpbnNlcnREb2N1bWVudDoge1xuXHRcdFx0Y2hlY2s6IG5ldyBTaW1wbGVTY2hlbWEoe1xuXHRcdFx0XHRjb2xsZWN0aW9uOiB7XG5cdFx0XHRcdFx0dHlwZTogU3RyaW5nXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGRvY3VtZW50OiB7XG5cdFx0XHRcdFx0dHlwZTogT2JqZWN0LFxuXHRcdFx0XHRcdGJsYWNrYm94OiB0cnVlXG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0ZnVuY3Rpb246IGZ1bmN0aW9uKGNvbGxlY3Rpb246IHN0cmluZywgZG9jdW1lbnQ6IE9iamVjdCkge1xuXHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG5cdFx0XHRcdFx0bGV0IHNjaGVtYUVycm9ycyA9IG51bGw7XG5cblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLmdldE1haW5EQigpLm1vZGVsKGNvbGxlY3Rpb24pWydzaW1wbHNjaGVtYSddLnZhbGlkYXRlKGRvY3VtZW50KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2F0Y2ggKGVycm9ycykge1xuXHRcdFx0XHRcdFx0c2NoZW1hRXJyb3JzID0gZXJyb3JzO1xuXHRcdFx0XHRcdFx0dGhpcy5jYWxsTWV0aG9kSW50ZXJuYWwuY2FsbCh0aGlzLCAnaW5zZXJ0RXJyb3JMb2cnLCAnU2NoZW1hIEZhaWxlZCBvbiBpbnNlcnQgLSAnICsgY29sbGVjdGlvbiwgW3NjaGVtYUVycm9ycywgZG9jdW1lbnRdKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XG5cdFx0XHRcdFx0aWYgKHNjaGVtYUVycm9ycykge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coc2NoZW1hRXJyb3JzKTtcblx0XHRcdFx0XHRcdHJlamVjdCgnU2NoZW1hIEVycm9ycycpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdGlmIChnZXRCaW5hcnlTaXplKEpTT04uc3RyaW5naWZ5KGRvY3VtZW50KSkgPCAyMDAwMDApIHtcblx0XHRcdFx0XHRcdFx0TG9ncy5jcmVhdGUoe1xuXHRcdFx0XHRcdFx0XHRcdF9pZDogVHlwZXMuT2JqZWN0SWQoKS50b0hleFN0cmluZygpLFxuXHRcdFx0XHRcdFx0XHRcdGRhdGU6IG5ldyBEYXRlKCksXG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogJ2luZm8nLFxuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiAnSW5zZXJ0IERvY3VtZW50Jyxcblx0XHRcdFx0XHRcdFx0XHRtZXNzYWdlOiAnVXNlcjogJyArIHRoaXMudXNlciArICcsIENvbGxlY3Rpb24gVHlwZTogJyArIGNvbGxlY3Rpb24sXG5cdFx0XHRcdFx0XHRcdFx0cGF5bG9hZDogZG9jdW1lbnQsXG5cdFx0XHRcdFx0XHRcdFx0bWV0aG9kOiAnaW5zZXJ0RG9jdW1lbnQnLFxuXHRcdFx0XHRcdFx0XHRcdHVzZXI6IHRoaXMudXNlcixcblx0XHRcdFx0XHRcdFx0XHRtZXNzYWdlSWQ6ICcnXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdExvZ3MuY3JlYXRlKHtcblx0XHRcdFx0XHRcdFx0XHRfaWQ6IFR5cGVzLk9iamVjdElkKCkudG9IZXhTdHJpbmcoKSxcblx0XHRcdFx0XHRcdFx0XHRkYXRlOiBuZXcgRGF0ZSgpLFxuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdpbmZvJyxcblx0XHRcdFx0XHRcdFx0XHR0aXRsZTogJ0luc2VydCBEb2N1bWVudCcsXG5cdFx0XHRcdFx0XHRcdFx0bWVzc2FnZTogJ1VzZXI6ICcgKyB0aGlzLnVzZXIgKyAnLCBDb2xsZWN0aW9uIFR5cGU6ICcgKyBjb2xsZWN0aW9uLFxuXHRcdFx0XHRcdFx0XHRcdHBheWxvYWQ6ICdUb28gQmlnJyxcblx0XHRcdFx0XHRcdFx0XHRtZXRob2Q6ICdpbnNlcnREb2N1bWVudCcsXG5cdFx0XHRcdFx0XHRcdFx0dXNlcjogdGhpcy51c2VyLFxuXHRcdFx0XHRcdFx0XHRcdG1lc3NhZ2VJZDogJydcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdGxldCBpZCA9IFR5cGVzLk9iamVjdElkKCkudG9IZXhTdHJpbmcoKTtcblx0XHRcdFx0XHRcdGRvY3VtZW50WydfaWQnXSA9IGlkO1xuXHRcdFx0XHRcdFx0ZG9jdW1lbnRbJ19fdiddID0gMDtcblx0XHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRNYWluREIoKS5tb2RlbChjb2xsZWN0aW9uKS5jcmVhdGUoZG9jdW1lbnQpLnRoZW4oKCkgPT4gcmVzb2x2ZShpZCksIGVyciA9PiByZWplY3QoZXJyKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdC8vIFJlcGxhY2VzIDEgZG9jdW1lbnQgd2l0aCBuZXcgZG9jdW1lbnQgKGZyb20gX2lkKVxuXHRcdC8vIEBJbnB1dHM6IGNvbGxlY3Rpb24sIGRvY3VtZW50IGlkXG5cdFx0Ly8gQE91dHB1dHM6IHJlcyA9IDEgKHVwZGF0ZWQgMSksIHJlcyA9IDAgKG5vdCB1cGRhdGVkKSwgZXJyID0gbm90IHVwZGF0ZWQvd3JvbmcgdmVyc2lvblxuXHRcdC8vIFNlYXJjaCBmb3IgZG9jLCBjaGVjayB2ZXJzaW9uLCBpZiBmb3VuZCB0aGVuIHRyeSBhbmQgdXBkYXRlXG5cdFx0dXBkYXRlRG9jdW1lbnQ6IHtcblx0XHRcdGNoZWNrOiBuZXcgU2ltcGxlU2NoZW1hKHtcblx0XHRcdFx0Y29sbGVjdGlvbjoge1xuXHRcdFx0XHRcdHR5cGU6IFN0cmluZ1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRmX2RvY3VtZW50OiB7XG5cdFx0XHRcdFx0dHlwZTogT2JqZWN0LFxuXHRcdFx0XHRcdGJsYWNrYm94OiB0cnVlXG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0ZnVuY3Rpb246IGZ1bmN0aW9uKGNvbGxlY3Rpb246IHN0cmluZywgZl9kb2N1bWVudDogT2JqZWN0KSB7XG5cdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLmdldE1haW5EQigpLm1vZGVsKGNvbGxlY3Rpb24pLmZpbmRPbmUoe19pZDogZl9kb2N1bWVudFsnX2lkJ119KS5sZWFuKCkuZXhlYygoZXJyRG9jLCBjdXJyRG9jKSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAoY3VyckRvYykge1xuXHRcdFx0XHRcdFx0XHRpZiAoY3VyckRvYy5fX3YgPT09IGZfZG9jdW1lbnRbJ19fdiddKSB7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IHZlcnNpb25Eb2MgPSBkZWVwQ29weShjdXJyRG9jKTtcblxuXHRcdFx0XHRcdFx0XHRcdHZlcnNpb25Eb2MuX2lkID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0X2lkOiBjdXJyRG9jLl9pZCxcblx0XHRcdFx0XHRcdFx0XHRcdF9fdjogY3VyckRvYy5fX3Zcblx0XHRcdFx0XHRcdFx0XHR9O1xuXG5cdFx0XHRcdFx0XHRcdFx0bGV0IHNjaGVtYUVycm9ycyA9IG51bGw7XG5cblx0XHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLmdldE1haW5EQigpLm1vZGVsKGNvbGxlY3Rpb24pWydzaW1wbHNjaGVtYSddLnZhbGlkYXRlKGZfZG9jdW1lbnQpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRjYXRjaCAoZXJyb3JzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRzY2hlbWFFcnJvcnMgPSBlcnJvcnM7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmNhbGxNZXRob2RJbnRlcm5hbC5jYWxsKHRoaXMsICdpbnNlcnRFcnJvckxvZycsICdTY2hlbWEgRmFpbGVkIG9uIHVwZGF0ZURvY3VtZW50IC0gJyArIGNvbGxlY3Rpb24sIFtzY2hlbWFFcnJvcnMsIGZfZG9jdW1lbnRdKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHNjaGVtYUVycm9ycykge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coc2NoZW1hRXJyb3JzKTtcblx0XHRcdFx0XHRcdFx0XHRcdHJlamVjdCgnU2NoZW1hIEVycm9ycycpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRNYWluREIoKS5tb2RlbChSZXNvbHZlSU9TZXJ2ZXIuZ2V0TWFpbkRCKCkubW9kZWwoY29sbGVjdGlvbilbJ3ZlcnNpb25Db2xsZWN0aW9uJ10pLmNyZWF0ZSh2ZXJzaW9uRG9jKS50aGVuKGRvYyA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRNYWluREIoKS5tb2RlbChSZXNvbHZlSU9TZXJ2ZXIuZ2V0TWFpbkRCKCkubW9kZWwoY29sbGVjdGlvbilbJ3ZlcnNpb25Db2xsZWN0aW9uJ10pLmRlbGV0ZU1hbnkoe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCRhbmQ6IFtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHsnX2lkLl9pZCc6IGN1cnJEb2MuX2lkfSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHsnX2lkLl9fdic6IHskbHRlOiBjdXJyRG9jLl9fdiAtIDR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fSkuZXhlYygpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSwgZXJyID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZXJyKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRsZXQgdXBkYXRlcyA9IGdldE1vbmdvVXBkYXRlcyhjdXJyRG9jLCBmX2RvY3VtZW50LCB0cnVlKTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHVwZGF0ZXMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLmdldE1haW5EQigpLm1vZGVsKGNvbGxlY3Rpb24pLnVwZGF0ZU9uZSh7X2lkOiBmX2RvY3VtZW50WydfaWQnXX0sIHVwZGF0ZXMsIHtzdHJpY3Q6IGZhbHNlfSkuZXhlYygpLnRoZW4ocmVzID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJlcy5uTW9kaWZpZWQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9LCBlcnIgPT4gcmVqZWN0KGVycikpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUoMSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdGlmIChnZXRCaW5hcnlTaXplKEpTT04uc3RyaW5naWZ5KGZfZG9jdW1lbnQpKSA8IDIwMDAwMCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRMb2dzLmNyZWF0ZSh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0X2lkOiBUeXBlcy5PYmplY3RJZCgpLnRvSGV4U3RyaW5nKCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGF0ZTogbmV3IERhdGUoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5mbycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6ICdVcGRhdGUgRG9jdW1lbnQnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1lc3NhZ2U6ICdVc2VyOiAnICsgdGhpcy51c2VyICsgJywgQ29sbGVjdGlvbiBUeXBlOiAnICsgY29sbGVjdGlvbixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwYXlsb2FkOiBmX2RvY3VtZW50LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1ldGhvZDogJ3VwZGF0ZURvY3VtZW50Jyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1c2VyOiB0aGlzLnVzZXIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWVzc2FnZUlkOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRMb2dzLmNyZWF0ZSh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0X2lkOiBUeXBlcy5PYmplY3RJZCgpLnRvSGV4U3RyaW5nKCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGF0ZTogbmV3IERhdGUoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5mbycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6ICdVcGRhdGUgRG9jdW1lbnQnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1lc3NhZ2U6ICdVc2VyOiAnICsgdGhpcy51c2VyICsgJywgQ29sbGVjdGlvbiBUeXBlOiAnICsgY29sbGVjdGlvbixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwYXlsb2FkOiAnVG9vIEJpZycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWV0aG9kOiAndXBkYXRlRG9jdW1lbnQnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHVzZXI6IHRoaXMudXNlcixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtZXNzYWdlSWQ6ICcnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnaW52YWxpZCB2ZXJzaW9uIC0gJyArIGNvbGxlY3Rpb24sIGN1cnJEb2MuX192LCBmX2RvY3VtZW50WydfX3YnXSk7XG5cblx0XHRcdFx0XHRcdFx0XHRSZXNvbHZlSU9TZXJ2ZXIuZ2V0TWFpbkRCKCkubW9kZWwoUmVzb2x2ZUlPU2VydmVyLmdldE1haW5EQigpLm1vZGVsKGNvbGxlY3Rpb24pWyd2ZXJzaW9uQ29sbGVjdGlvbiddKS5maW5kT25lKHtcblx0XHRcdFx0XHRcdFx0XHRcdCRhbmQ6IFtcblx0XHRcdFx0XHRcdFx0XHRcdFx0eydfaWQuX2lkJzogY3VyckRvYy5faWR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7J19pZC5fX3YnOiBmX2RvY3VtZW50WydfX3YnXX1cblx0XHRcdFx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcdFx0XHR9KS5sZWFuKCkuZXhlYygoZXJyT2xkRG9jLCBvbGREb2MpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdGxldCBuZXdDdXJyRG9jSWQgPSBjdXJyRG9jLl9pZDtcblxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKG9sZERvYykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRsZXQgdmVyc2lvbkRvYyA9IGRlZXBDb3B5KGN1cnJEb2MpO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZlcnNpb25Eb2MuX2lkID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdF9pZDogY3VyckRvYy5faWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0X192OiBjdXJyRG9jLl9fdlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9O1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxldCB1cGRhdGVkRG9jID0gZ2V0TW9uZ29NZXJnZVVwZGF0ZWREb2MoZl9kb2N1bWVudCwgY3VyckRvYywgb2xkRG9jKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dXBkYXRlZERvYy5faWQgPSBuZXdDdXJyRG9jSWQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHVwZGF0ZWREb2MuX192Kys7XG5cdFxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRNYWluREIoKS5tb2RlbChjb2xsZWN0aW9uKS5yZXBsYWNlT25lKHtfaWQ6IG5ld0N1cnJEb2NJZH0sIHVwZGF0ZWREb2MpLmV4ZWMoKS50aGVuKHJlcyA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLmdldE1haW5EQigpLm1vZGVsKFJlc29sdmVJT1NlcnZlci5nZXRNYWluREIoKS5tb2RlbChjb2xsZWN0aW9uKVsndmVyc2lvbkNvbGxlY3Rpb24nXSkuY3JlYXRlKHZlcnNpb25Eb2MpLnRoZW4oZG9jID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRNYWluREIoKS5tb2RlbChSZXNvbHZlSU9TZXJ2ZXIuZ2V0TWFpbkRCKCkubW9kZWwoY29sbGVjdGlvbilbJ3ZlcnNpb25Db2xsZWN0aW9uJ10pLmRlbGV0ZU1hbnkoe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkYW5kOiBbXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0eydfaWQuX2lkJzogdmVyc2lvbkRvYy5faWQuX2lkfSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7J19pZC5fX3YnOiB7JGx0ZTogdmVyc2lvbkRvYy5faWQuX192IC0gNH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pLmV4ZWMoKTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXMubk1vZGlmaWVkKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSwgZXJyID0+IHJlamVjdChlcnIpKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZWplY3QoJ0ludmFsaWQgVmVyc2lvbiBBbmQgQ291bGQgTm90IEZpbmQgSGlzdG9yeSAtIERCOiAnICsgY3VyckRvYy5fX3YgKyAnLCBUcnlpbmcgdG8gdXBkYXRlIHdpdGggOicgKyBmX2RvY3VtZW50WydfX3YnXSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRyZWplY3QoZXJyRG9jKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHQvLyBVcGRhdGVzIDEgZG9jdW1lbnQncyBwcm9wcyAoZnJvbSBfaWQpXG5cdFx0Ly8gQElucHV0czogY29sbGVjdGlvbiwgZG9jdW1lbnQgaWQsIGRvY3VtZW50IHZlcnNpb24sIHVwZGF0ZSBwYXJhbXRlcnMgKHtwcm9wOiAneHh4JywgZGF0YTogJ3l5eX0pXG5cdFx0Ly8gQE91dHB1dHM6IHJlcyA9IDEgKHVwZGF0ZWQgMSksIHJlcyA9IDAgKG5vdCB1cGRhdGVkKSwgZXJyID0gbm90IHVwZGF0ZWQvd3JvbmcgdmVyc2lvblxuXHRcdC8vIFNlYXJjaCBmb3IgZG9jLCBjaGVjayB2ZXJzaW9uLCBpZiBmb3VuZCB0aGVuIHRyeSBhbmQgdXBkYXRlIHByb3BzXG5cdFx0dXBkYXRlRG9jdW1lbnRQcm9wczoge1xuXHRcdFx0Y2hlY2s6IG5ldyBTaW1wbGVTY2hlbWEoe1xuXHRcdFx0XHRjb2xsZWN0aW9uOiB7XG5cdFx0XHRcdFx0dHlwZTogU3RyaW5nXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGRvY19pZDoge1xuXHRcdFx0XHRcdHR5cGU6IFN0cmluZ1xuXHRcdFx0XHR9LFxuXHRcdFx0XHR1cGRhdGVQYXJhbXM6IHtcblx0XHRcdFx0XHR0eXBlOiBBcnJheVxuXHRcdFx0XHR9LFxuXHRcdFx0XHQndXBkYXRlUGFyYW1zLiQnOiB7XG5cdFx0XHRcdFx0dHlwZTogT2JqZWN0LFxuXHRcdFx0XHRcdGJsYWNrYm94OiB0cnVlXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGRvY19fdjoge1xuXHRcdFx0XHRcdHR5cGU6IE51bWJlclxuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdGZ1bmN0aW9uOiBmdW5jdGlvbihjb2xsZWN0aW9uOiBzdHJpbmcsIGRvY19pZDogc3RyaW5nLCB1cGRhdGVQYXJhbXM6IGFueVtdLCBkb2NfX3Y6IG51bWJlcikge1xuXHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRNYWluREIoKS5tb2RlbChjb2xsZWN0aW9uKS5maW5kT25lKHtfaWQ6IGRvY19pZH0pLmxlYW4oKS5leGVjKChlcnJEb2MsIGN1cnJEb2M6IERvY3VtZW50KSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAoY3VyckRvYykge1xuXHRcdFx0XHRcdFx0XHRsZXQgbW9kaWZpZWREb2MgPSBkZWVwQ29weShjdXJyRG9jKTtcblxuXHRcdFx0XHRcdFx0XHR1cGRhdGVQYXJhbXMuZm9yRWFjaChkYXRhID0+IHtcblx0XHRcdFx0XHRcdFx0XHRtb2RpZmllZERvY1tkYXRhLnByb3BdID0gZGF0YS5kYXRhO1xuXHRcdFx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdFx0XHRpZiAobW9kaWZpZWREb2MuX192ID09PSBkb2NfX3YpIHtcblx0XHRcdFx0XHRcdFx0XHRsZXQgdmVyc2lvbkRvYyA9IGRlZXBDb3B5KGN1cnJEb2MpO1xuXHRcblx0XHRcdFx0XHRcdFx0XHR2ZXJzaW9uRG9jLl9pZCA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdF9pZDogY3VyckRvYy5faWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRfX3Y6IGN1cnJEb2MuX192XG5cdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0bGV0IHNjaGVtYUVycm9ycyA9IG51bGw7XG5cdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRSZXNvbHZlSU9TZXJ2ZXIuZ2V0TWFpbkRCKCkubW9kZWwoY29sbGVjdGlvbilbJ3NpbXBsc2NoZW1hJ10udmFsaWRhdGUobW9kaWZpZWREb2MpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRjYXRjaCAoZXJyb3JzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRzY2hlbWFFcnJvcnMgPSBlcnJvcnM7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmNhbGxNZXRob2RJbnRlcm5hbC5jYWxsKHRoaXMsICdpbnNlcnRFcnJvckxvZycsICdTY2hlbWEgRmFpbGVkIG9uIHVwZGF0ZURvY3VtZW50UHJvcHMgLSAnICsgY29sbGVjdGlvbiwgW3NjaGVtYUVycm9ycywgbW9kaWZpZWREb2NdKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHNjaGVtYUVycm9ycykge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coc2NoZW1hRXJyb3JzKTtcblx0XHRcdFx0XHRcdFx0XHRcdHJlamVjdCgnU2NoZW1hIEVycm9ycycpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRNYWluREIoKS5tb2RlbChSZXNvbHZlSU9TZXJ2ZXIuZ2V0TWFpbkRCKCkubW9kZWwoY29sbGVjdGlvbilbJ3ZlcnNpb25Db2xsZWN0aW9uJ10pLmNyZWF0ZSh2ZXJzaW9uRG9jKS50aGVuKGRvYyA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRNYWluREIoKS5tb2RlbChSZXNvbHZlSU9TZXJ2ZXIuZ2V0TWFpbkRCKCkubW9kZWwoY29sbGVjdGlvbilbJ3ZlcnNpb25Db2xsZWN0aW9uJ10pLmRlbGV0ZU1hbnkoe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCRhbmQ6IFtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHsnX2lkLl9pZCc6IGN1cnJEb2MuX2lkfSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHsnX2lkLl9fdic6IHskbHRlOiBjdXJyRG9jLl9fdiAtIDR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fSkuZXhlYygpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSwgZXJyID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZXJyKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRsZXQgdXBkYXRlcyA9IGdldE1vbmdvVXBkYXRlcyhjdXJyRG9jLCBtb2RpZmllZERvYywgdHJ1ZSk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdGlmICh1cGRhdGVzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRNYWluREIoKS5tb2RlbChjb2xsZWN0aW9uKS51cGRhdGVPbmUoe19pZDogbW9kaWZpZWREb2MuX2lkfSwgdXBkYXRlcywge3N0cmljdDogZmFsc2V9KS5leGVjKCkudGhlbihyZXMgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUocmVzLm9rKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSwgZXJyID0+IHJlamVjdChlcnIpKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoZ2V0QmluYXJ5U2l6ZShKU09OLnN0cmluZ2lmeSh1cGRhdGVQYXJhbXMpKSA8IDIwMDAwMCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRMb2dzLmNyZWF0ZSh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0X2lkOiBUeXBlcy5PYmplY3RJZCgpLnRvSGV4U3RyaW5nKCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGF0ZTogbmV3IERhdGUoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5mbycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6ICdVcGRhdGUgRG9jdW1lbnQgUHJvcHMnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1lc3NhZ2U6ICdVc2VyOiAnICsgdGhpcy51c2VyICsgJywgQ29sbGVjdGlvbiBUeXBlOiAnICsgY29sbGVjdGlvbiArICcsIElkOiAnICsgZG9jX2lkICsgJywgJyArICdWZXJzaW9uOiAnICsgZG9jX192LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHBheWxvYWQ6IHVwZGF0ZVBhcmFtcyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtZXRob2Q6ICd1cGRhdGVEb2N1bWVudFByb3BzJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1c2VyOiB0aGlzLnVzZXIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWVzc2FnZUlkOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRMb2dzLmNyZWF0ZSh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0X2lkOiBUeXBlcy5PYmplY3RJZCgpLnRvSGV4U3RyaW5nKCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGF0ZTogbmV3IERhdGUoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5mbycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6ICdVcGRhdGUgRG9jdW1lbnQgUHJvcHMnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1lc3NhZ2U6ICdVc2VyOiAnICsgdGhpcy51c2VyICsgJywgQ29sbGVjdGlvbiBUeXBlOiAnICsgY29sbGVjdGlvbiArICcsIElkOiAnICsgZG9jX2lkICsgJywgJyArICdWZXJzaW9uOiAnICsgZG9jX192LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHBheWxvYWQ6ICdUb28gQmlnJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtZXRob2Q6ICd1cGRhdGVEb2N1bWVudFByb3BzJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1c2VyOiB0aGlzLnVzZXIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWVzc2FnZUlkOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ2ludmFsaWQgdmVyc2lvbiAtICcgKyBjb2xsZWN0aW9uLCBjdXJyRG9jLl9fdiwgZG9jX192KTtcblxuXHRcdFx0XHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRNYWluREIoKS5tb2RlbChSZXNvbHZlSU9TZXJ2ZXIuZ2V0TWFpbkRCKCkubW9kZWwoY29sbGVjdGlvbilbJ3ZlcnNpb25Db2xsZWN0aW9uJ10pLmZpbmRPbmUoe1xuXHRcdFx0XHRcdFx0XHRcdFx0JGFuZDogW1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR7J19pZC5faWQnOiBjdXJyRG9jLl9pZH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHsnX2lkLl9fdic6IGRvY19fdn1cblx0XHRcdFx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcdFx0XHR9KS5sZWFuKCkuZXhlYygoZXJyT2xkRG9jLCBvbGREb2MpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdGxldCBuZXdDdXJyRG9jSWQgPSBjdXJyRG9jLl9pZDtcblxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKG9sZERvYykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRsZXQgdmVyc2lvbkRvYyA9IGRlZXBDb3B5KGN1cnJEb2MpO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZlcnNpb25Eb2MuX2lkID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdF9pZDogY3VyckRvYy5faWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0X192OiBjdXJyRG9jLl9fdlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9O1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxldCB1cGRhdGVkRG9jID0gZ2V0TW9uZ29NZXJnZVVwZGF0ZWREb2MobW9kaWZpZWREb2MsIGN1cnJEb2MsIG9sZERvYyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHVwZGF0ZWREb2MuX2lkID0gbmV3Q3VyckRvY0lkO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR1cGRhdGVkRG9jLl9fdisrO1xuXHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLmdldE1haW5EQigpLm1vZGVsKGNvbGxlY3Rpb24pLnJlcGxhY2VPbmUoe19pZDogbmV3Q3VyckRvY0lkfSwgdXBkYXRlZERvYykuZXhlYygpLnRoZW4ocmVzID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRSZXNvbHZlSU9TZXJ2ZXIuZ2V0TWFpbkRCKCkubW9kZWwoUmVzb2x2ZUlPU2VydmVyLmdldE1haW5EQigpLm1vZGVsKGNvbGxlY3Rpb24pWyd2ZXJzaW9uQ29sbGVjdGlvbiddKS5jcmVhdGUodmVyc2lvbkRvYykudGhlbihkb2MgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLmdldE1haW5EQigpLm1vZGVsKFJlc29sdmVJT1NlcnZlci5nZXRNYWluREIoKS5tb2RlbChjb2xsZWN0aW9uKVsndmVyc2lvbkNvbGxlY3Rpb24nXSkuZGVsZXRlTWFueSh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCRhbmQ6IFtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7J19pZC5faWQnOiB2ZXJzaW9uRG9jLl9pZC5faWR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHsnX2lkLl9fdic6IHskbHRlOiB2ZXJzaW9uRG9jLl9pZC5fX3YgLSA0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSkuZXhlYygpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sIGVyciA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhlcnIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUocmVzLm5Nb2RpZmllZCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0sIGVyciA9PiByZWplY3QoZXJyKSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVqZWN0KCdJbnZhbGlkIFZlcnNpb24gQW5kIENvdWxkIE5vdCBGaW5kIEhpc3RvcnkgUHJvcHMgLSBEQjogJyArIGN1cnJEb2MuX192ICsgJywgVHJ5aW5nIHRvIHVwZGF0ZSB3aXRoIDonICsgbW9kaWZpZWREb2MuX192KTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHJlamVjdChlcnJEb2MpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdHVwZGF0ZURvY3VtZW50T2ZmbGluZToge1xuXHRcdFx0Y2hlY2s6IG5ldyBTaW1wbGVTY2hlbWEoe1xuXHRcdFx0XHRjb2xsZWN0aW9uOiB7XG5cdFx0XHRcdFx0dHlwZTogU3RyaW5nXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGZfZG9jdW1lbnQ6IHtcblx0XHRcdFx0XHR0eXBlOiBPYmplY3QsXG5cdFx0XHRcdFx0YmxhY2tib3g6IHRydWVcblx0XHRcdFx0fSxcblx0XHRcdFx0Zl9vbGREb2N1bWVudDoge1xuXHRcdFx0XHRcdHR5cGU6IE9iamVjdCxcblx0XHRcdFx0XHRibGFja2JveDogdHJ1ZVxuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdGZ1bmN0aW9uOiBmdW5jdGlvbihjb2xsZWN0aW9uOiBzdHJpbmcsIGZfZG9jdW1lbnQ6IE9iamVjdCwgZl9vbGREb2N1bWVudDogT2JqZWN0KSB7XG5cdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLmdldE1haW5EQigpLm1vZGVsKGNvbGxlY3Rpb24pLmZpbmRPbmUoe19pZDogZl9kb2N1bWVudFsnX2lkJ119KS5sZWFuKCkuZXhlYygoZXJyRG9jLCBjdXJyRG9jKSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAoY3VyckRvYykge1xuXHRcdFx0XHRcdFx0XHRpZiAoY3VyckRvYy5fX3YgPT09IGZfZG9jdW1lbnRbJ19fdiddKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRsZXQgdmVyc2lvbkRvYyA9IGRlZXBDb3B5KGN1cnJEb2MpO1xuXG5cdFx0XHRcdFx0XHRcdFx0dmVyc2lvbkRvYy5faWQgPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRfaWQ6IGN1cnJEb2MuX2lkLFxuXHRcdFx0XHRcdFx0XHRcdFx0X192OiBjdXJyRG9jLl9fdlxuXHRcdFx0XHRcdFx0XHRcdH07XG5cblx0XHRcdFx0XHRcdFx0XHRsZXQgc2NoZW1hRXJyb3JzID0gbnVsbDtcblxuXHRcdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRSZXNvbHZlSU9TZXJ2ZXIuZ2V0TWFpbkRCKCkubW9kZWwoY29sbGVjdGlvbilbJ3NpbXBsc2NoZW1hJ10udmFsaWRhdGUoZl9kb2N1bWVudCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGNhdGNoIChlcnJvcnMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHNjaGVtYUVycm9ycyA9IGVycm9ycztcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuY2FsbE1ldGhvZEludGVybmFsLmNhbGwodGhpcywgJ2luc2VydEVycm9yTG9nJywgJ1NjaGVtYSBGYWlsZWQgb24gdXBkYXRlRG9jdW1lbnQgLSAnICsgY29sbGVjdGlvbiwgW3NjaGVtYUVycm9ycywgZl9kb2N1bWVudF0pO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0XHRpZiAoc2NoZW1hRXJyb3JzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhzY2hlbWFFcnJvcnMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0cmVqZWN0KCdTY2hlbWEgRXJyb3JzJyk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLmdldE1haW5EQigpLm1vZGVsKFJlc29sdmVJT1NlcnZlci5nZXRNYWluREIoKS5tb2RlbChjb2xsZWN0aW9uKVsndmVyc2lvbkNvbGxlY3Rpb24nXSkuY3JlYXRlKHZlcnNpb25Eb2MpLnRoZW4oZG9jID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLmdldE1haW5EQigpLm1vZGVsKFJlc29sdmVJT1NlcnZlci5nZXRNYWluREIoKS5tb2RlbChjb2xsZWN0aW9uKVsndmVyc2lvbkNvbGxlY3Rpb24nXSkuZGVsZXRlTWFueSh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0JGFuZDogW1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0eydfaWQuX2lkJzogY3VyckRvYy5faWR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0eydfaWQuX192JzogeyRsdGU6IGN1cnJEb2MuX192IC0gNH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KS5leGVjKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9LCBlcnIgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhlcnIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdGxldCB1cGRhdGVzID0gZ2V0TW9uZ29VcGRhdGVzKGN1cnJEb2MsIGZfZG9jdW1lbnQsIHRydWUpO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAodXBkYXRlcykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRSZXNvbHZlSU9TZXJ2ZXIuZ2V0TWFpbkRCKCkubW9kZWwoY29sbGVjdGlvbikudXBkYXRlT25lKHtfaWQ6IGZfZG9jdW1lbnRbJ19pZCddfSwgdXBkYXRlcywge3N0cmljdDogZmFsc2V9KS5leGVjKCkudGhlbihyZXMgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUocmVzLm5Nb2RpZmllZCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0sIGVyciA9PiByZWplY3QoZXJyKSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSgxKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGdldEJpbmFyeVNpemUoSlNPTi5zdHJpbmdpZnkoZl9kb2N1bWVudCkpIDwgMjAwMDAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdExvZ3MuY3JlYXRlKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRfaWQ6IFR5cGVzLk9iamVjdElkKCkudG9IZXhTdHJpbmcoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkYXRlOiBuZXcgRGF0ZSgpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdpbmZvJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogJ1VwZGF0ZSBEb2N1bWVudCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWVzc2FnZTogJ1VzZXI6ICcgKyB0aGlzLnVzZXIgKyAnLCBDb2xsZWN0aW9uIFR5cGU6ICcgKyBjb2xsZWN0aW9uLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHBheWxvYWQ6IGZfZG9jdW1lbnQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWV0aG9kOiAndXBkYXRlRG9jdW1lbnRPZmZsaW5lJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1c2VyOiB0aGlzLnVzZXIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWVzc2FnZUlkOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRMb2dzLmNyZWF0ZSh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0X2lkOiBUeXBlcy5PYmplY3RJZCgpLnRvSGV4U3RyaW5nKCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGF0ZTogbmV3IERhdGUoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5mbycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6ICdVcGRhdGUgRG9jdW1lbnQnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1lc3NhZ2U6ICdVc2VyOiAnICsgdGhpcy51c2VyICsgJywgQ29sbGVjdGlvbiBUeXBlOiAnICsgY29sbGVjdGlvbixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwYXlsb2FkOiAnVG9vIEJpZycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWV0aG9kOiAndXBkYXRlRG9jdW1lbnRPZmZsaW5lJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1c2VyOiB0aGlzLnVzZXIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWVzc2FnZUlkOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ2ludmFsaWQgdmVyc2lvbiAtICcgKyBjb2xsZWN0aW9uLCBjdXJyRG9jLl9fdiwgZl9kb2N1bWVudFsnX192J10pO1xuXG5cdFx0XHRcdFx0XHRcdFx0bGV0IG5ld0N1cnJEb2NJZCA9IGN1cnJEb2MuX2lkO1xuXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGZfb2xkRG9jdW1lbnQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGxldCB2ZXJzaW9uRG9jID0gZGVlcENvcHkoY3VyckRvYyk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdHZlcnNpb25Eb2MuX2lkID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRfaWQ6IGN1cnJEb2MuX2lkLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRfX3Y6IGN1cnJEb2MuX192XG5cdFx0XHRcdFx0XHRcdFx0XHR9O1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRsZXQgdXBkYXRlZERvYyA9IGdldE1vbmdvTWVyZ2VVcGRhdGVkRG9jKGZfZG9jdW1lbnQsIGN1cnJEb2MsIGZfb2xkRG9jdW1lbnQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0dXBkYXRlZERvYy5faWQgPSBuZXdDdXJyRG9jSWQ7XG5cdFx0XHRcdFx0XHRcdFx0XHR1cGRhdGVkRG9jLl9fdisrO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRSZXNvbHZlSU9TZXJ2ZXIuZ2V0TWFpbkRCKCkubW9kZWwoY29sbGVjdGlvbikucmVwbGFjZU9uZSh7X2lkOiBuZXdDdXJyRG9jSWR9LCB1cGRhdGVkRG9jKS5leGVjKCkudGhlbihyZXMgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRSZXNvbHZlSU9TZXJ2ZXIuZ2V0TWFpbkRCKCkubW9kZWwoUmVzb2x2ZUlPU2VydmVyLmdldE1haW5EQigpLm1vZGVsKGNvbGxlY3Rpb24pWyd2ZXJzaW9uQ29sbGVjdGlvbiddKS5jcmVhdGUodmVyc2lvbkRvYykudGhlbihkb2MgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRNYWluREIoKS5tb2RlbChSZXNvbHZlSU9TZXJ2ZXIuZ2V0TWFpbkRCKCkubW9kZWwoY29sbGVjdGlvbilbJ3ZlcnNpb25Db2xsZWN0aW9uJ10pLmRlbGV0ZU1hbnkoe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JGFuZDogW1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7J19pZC5faWQnOiB2ZXJzaW9uRG9jLl9pZC5faWR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7J19pZC5fX3YnOiB7JGx0ZTogdmVyc2lvbkRvYy5faWQuX192IC0gNH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRdXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSkuZXhlYygpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9LCBlcnIgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGVycik7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJlcy5uTW9kaWZpZWQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSwgZXJyID0+IHJlamVjdChlcnIpKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZWplY3QoJ09GRkxJTkUgLSBJbnZhbGlkIFZlcnNpb24gQW5kIENvdWxkIE5vdCBGaW5kIEhpc3RvcnkgLSBEQjogJyArIGN1cnJEb2MuX192ICsgJywgVHJ5aW5nIHRvIHVwZGF0ZSB3aXRoIDonICsgZl9kb2N1bWVudFsnX192J10pO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHJlamVjdChlcnJEb2MpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdC8vIFVwZGF0ZXMgMSBkb2N1bWVudCdzIHByb3BzIChmcm9tIF9pZClcblx0XHQvLyBASW5wdXRzOiBjb2xsZWN0aW9uLCBkb2N1bWVudCBpZCwgZG9jdW1lbnQgdmVyc2lvbiwgdXBkYXRlIHBhcmFtdGVycyAoe3Byb3A6ICd4eHgnLCBkYXRhOiAneXl5fSlcblx0XHQvLyBAT3V0cHV0czogcmVzID0gMSAodXBkYXRlZCAxKSwgcmVzID0gMCAobm90IHVwZGF0ZWQpLCBlcnIgPSBub3QgdXBkYXRlZC93cm9uZyB2ZXJzaW9uXG5cdFx0Ly8gU2VhcmNoIGZvciBkb2MsIGNoZWNrIHZlcnNpb24sIGlmIGZvdW5kIHRoZW4gdHJ5IGFuZCB1cGRhdGUgcHJvcHNcblx0XHR1cGRhdGVEb2N1bWVudFByb3BzT2ZmbGluZToge1xuXHRcdFx0Y2hlY2s6IG5ldyBTaW1wbGVTY2hlbWEoe1xuXHRcdFx0XHRjb2xsZWN0aW9uOiB7XG5cdFx0XHRcdFx0dHlwZTogU3RyaW5nXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGRvY19pZDoge1xuXHRcdFx0XHRcdHR5cGU6IFN0cmluZ1xuXHRcdFx0XHR9LFxuXHRcdFx0XHR1cGRhdGVQYXJhbXM6IHtcblx0XHRcdFx0XHR0eXBlOiBBcnJheVxuXHRcdFx0XHR9LFxuXHRcdFx0XHQndXBkYXRlUGFyYW1zLiQnOiB7XG5cdFx0XHRcdFx0dHlwZTogT2JqZWN0LFxuXHRcdFx0XHRcdGJsYWNrYm94OiB0cnVlXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGRvY19fdjoge1xuXHRcdFx0XHRcdHR5cGU6IE51bWJlclxuXHRcdFx0XHR9LFxuXHRcdFx0XHRmX29sZERvY3VtZW50OiB7XG5cdFx0XHRcdFx0dHlwZTogT2JqZWN0LFxuXHRcdFx0XHRcdGJsYWNrYm94OiB0cnVlXG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0ZnVuY3Rpb246IGZ1bmN0aW9uKGNvbGxlY3Rpb246IHN0cmluZywgZG9jX2lkOiBzdHJpbmcsIHVwZGF0ZVBhcmFtczogYW55W10sIGRvY19fdjogbnVtYmVyLCBmX29sZERvY3VtZW50OiBPYmplY3QpIHtcblx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdFx0XHRSZXNvbHZlSU9TZXJ2ZXIuZ2V0TWFpbkRCKCkubW9kZWwoY29sbGVjdGlvbikuZmluZE9uZSh7X2lkOiBkb2NfaWR9KS5sZWFuKCkuZXhlYygoZXJyRG9jLCBjdXJyRG9jOiBEb2N1bWVudCkgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKGN1cnJEb2MpIHtcblx0XHRcdFx0XHRcdFx0bGV0IG1vZGlmaWVkRG9jID0gZGVlcENvcHkoY3VyckRvYyk7XG5cblx0XHRcdFx0XHRcdFx0dXBkYXRlUGFyYW1zLmZvckVhY2goZGF0YSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0bW9kaWZpZWREb2NbZGF0YS5wcm9wXSA9IGRhdGEuZGF0YTtcblx0XHRcdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRcdFx0aWYgKG1vZGlmaWVkRG9jLl9fdiA9PT0gZG9jX192KSB7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IHZlcnNpb25Eb2MgPSBkZWVwQ29weShjdXJyRG9jKTtcblx0XG5cdFx0XHRcdFx0XHRcdFx0dmVyc2lvbkRvYy5faWQgPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRfaWQ6IGN1cnJEb2MuX2lkLFxuXHRcdFx0XHRcdFx0XHRcdFx0X192OiBjdXJyRG9jLl9fdlxuXHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHRcdGxldCBzY2hlbWFFcnJvcnMgPSBudWxsO1xuXHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLmdldE1haW5EQigpLm1vZGVsKGNvbGxlY3Rpb24pWydzaW1wbHNjaGVtYSddLnZhbGlkYXRlKG1vZGlmaWVkRG9jKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0Y2F0Y2ggKGVycm9ycykge1xuXHRcdFx0XHRcdFx0XHRcdFx0c2NoZW1hRXJyb3JzID0gZXJyb3JzO1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5jYWxsTWV0aG9kSW50ZXJuYWwuY2FsbCh0aGlzLCAnaW5zZXJ0RXJyb3JMb2cnLCAnU2NoZW1hIEZhaWxlZCBvbiB1cGRhdGVEb2N1bWVudFByb3BzIC0gJyArIGNvbGxlY3Rpb24sIFtzY2hlbWFFcnJvcnMsIG1vZGlmaWVkRG9jXSk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHRcdGlmIChzY2hlbWFFcnJvcnMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHNjaGVtYUVycm9ycyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZWplY3QoJ1NjaGVtYSBFcnJvcnMnKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRSZXNvbHZlSU9TZXJ2ZXIuZ2V0TWFpbkRCKCkubW9kZWwoUmVzb2x2ZUlPU2VydmVyLmdldE1haW5EQigpLm1vZGVsKGNvbGxlY3Rpb24pWyd2ZXJzaW9uQ29sbGVjdGlvbiddKS5jcmVhdGUodmVyc2lvbkRvYykudGhlbihkb2MgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRSZXNvbHZlSU9TZXJ2ZXIuZ2V0TWFpbkRCKCkubW9kZWwoUmVzb2x2ZUlPU2VydmVyLmdldE1haW5EQigpLm1vZGVsKGNvbGxlY3Rpb24pWyd2ZXJzaW9uQ29sbGVjdGlvbiddKS5kZWxldGVNYW55KHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkYW5kOiBbXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7J19pZC5faWQnOiBjdXJyRG9jLl9pZH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7J19pZC5fX3YnOiB7JGx0ZTogY3VyckRvYy5fX3YgLSA0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRdXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pLmV4ZWMoKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0sIGVyciA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGVycik7XG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IHVwZGF0ZXMgPSBnZXRNb25nb1VwZGF0ZXMoY3VyckRvYywgbW9kaWZpZWREb2MsIHRydWUpO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAodXBkYXRlcykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRSZXNvbHZlSU9TZXJ2ZXIuZ2V0TWFpbkRCKCkubW9kZWwoY29sbGVjdGlvbikudXBkYXRlT25lKHtfaWQ6IG1vZGlmaWVkRG9jLl9pZH0sIHVwZGF0ZXMsIHtzdHJpY3Q6IGZhbHNlfSkuZXhlYygpLnRoZW4ocmVzID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJlcy5vayk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0sIGVyciA9PiByZWplY3QoZXJyKSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSgxKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGdldEJpbmFyeVNpemUoSlNPTi5zdHJpbmdpZnkodXBkYXRlUGFyYW1zKSkgPCAyMDAwMDApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0TG9ncy5jcmVhdGUoe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdF9pZDogVHlwZXMuT2JqZWN0SWQoKS50b0hleFN0cmluZygpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRhdGU6IG5ldyBEYXRlKCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHlwZTogJ2luZm8nLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlOiAnVXBkYXRlIERvY3VtZW50IFByb3BzJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtZXNzYWdlOiAnVXNlcjogJyArIHRoaXMudXNlciArICcsIENvbGxlY3Rpb24gVHlwZTogJyArIGNvbGxlY3Rpb24gKyAnLCBJZDogJyArIGRvY19pZCArICcsICcgKyAnVmVyc2lvbjogJyArIGRvY19fdixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwYXlsb2FkOiB1cGRhdGVQYXJhbXMsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWV0aG9kOiAndXBkYXRlRG9jdW1lbnRQcm9wc09mZmxpbmUnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHVzZXI6IHRoaXMudXNlcixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtZXNzYWdlSWQ6ICcnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdExvZ3MuY3JlYXRlKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRfaWQ6IFR5cGVzLk9iamVjdElkKCkudG9IZXhTdHJpbmcoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkYXRlOiBuZXcgRGF0ZSgpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdpbmZvJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogJ1VwZGF0ZSBEb2N1bWVudCBQcm9wcycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWVzc2FnZTogJ1VzZXI6ICcgKyB0aGlzLnVzZXIgKyAnLCBDb2xsZWN0aW9uIFR5cGU6ICcgKyBjb2xsZWN0aW9uICsgJywgSWQ6ICcgKyBkb2NfaWQgKyAnLCAnICsgJ1ZlcnNpb246ICcgKyBkb2NfX3YsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cGF5bG9hZDogJ1RvbyBCaWcnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1ldGhvZDogJ3VwZGF0ZURvY3VtZW50UHJvcHNPZmZsaW5lJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1c2VyOiB0aGlzLnVzZXIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWVzc2FnZUlkOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ2ludmFsaWQgdmVyc2lvbiAtICcgKyBjb2xsZWN0aW9uLCBjdXJyRG9jLl9fdiwgZG9jX192KTtcblxuXHRcdFx0XHRcdFx0XHRcdGxldCBuZXdDdXJyRG9jSWQgPSBjdXJyRG9jLl9pZDtcblxuXHRcdFx0XHRcdFx0XHRcdGlmIChmX29sZERvY3VtZW50KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRsZXQgdmVyc2lvbkRvYyA9IGRlZXBDb3B5KGN1cnJEb2MpO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHR2ZXJzaW9uRG9jLl9pZCA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0X2lkOiBjdXJyRG9jLl9pZCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0X192OiBjdXJyRG9jLl9fdlxuXHRcdFx0XHRcdFx0XHRcdFx0fTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IHVwZGF0ZWREb2MgPSBnZXRNb25nb01lcmdlVXBkYXRlZERvYyhtb2RpZmllZERvYywgY3VyckRvYywgZl9vbGREb2N1bWVudCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR1cGRhdGVkRG9jLl9pZCA9IG5ld0N1cnJEb2NJZDtcblx0XHRcdFx0XHRcdFx0XHRcdHVwZGF0ZWREb2MuX192Kys7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRNYWluREIoKS5tb2RlbChjb2xsZWN0aW9uKS5yZXBsYWNlT25lKHtfaWQ6IG5ld0N1cnJEb2NJZH0sIHVwZGF0ZWREb2MpLmV4ZWMoKS50aGVuKHJlcyA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRNYWluREIoKS5tb2RlbChSZXNvbHZlSU9TZXJ2ZXIuZ2V0TWFpbkRCKCkubW9kZWwoY29sbGVjdGlvbilbJ3ZlcnNpb25Db2xsZWN0aW9uJ10pLmNyZWF0ZSh2ZXJzaW9uRG9jKS50aGVuKGRvYyA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLmdldE1haW5EQigpLm1vZGVsKFJlc29sdmVJT1NlcnZlci5nZXRNYWluREIoKS5tb2RlbChjb2xsZWN0aW9uKVsndmVyc2lvbkNvbGxlY3Rpb24nXSkuZGVsZXRlTWFueSh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkYW5kOiBbXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHsnX2lkLl9pZCc6IHZlcnNpb25Eb2MuX2lkLl9pZH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHsnX2lkLl9fdic6IHskbHRlOiB2ZXJzaW9uRG9jLl9pZC5fX3YgLSA0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KS5leGVjKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0sIGVyciA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZXJyKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUocmVzLm5Nb2RpZmllZCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9LCBlcnIgPT4gcmVqZWN0KGVycikpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJlamVjdCgnT0ZGTElORSAtIEludmFsaWQgVmVyc2lvbiBBbmQgQ291bGQgTm90IEZpbmQgSGlzdG9yeSBQcm9wcyAtIERCOiAnICsgY3VyckRvYy5fX3YgKyAnLCBUcnlpbmcgdG8gdXBkYXRlIHdpdGggOicgKyBtb2RpZmllZERvYy5fX3YpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHJlamVjdChlcnJEb2MpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdC8vIFJlbW92ZXMgMSBkb2N1bWVudCAoZnJvbSBfaWQpXG5cdFx0Ly8gQElucHV0czogY29sbGVjdGlvbiwgZG9jdW1lbnQgaWRcblx0XHQvLyBAT3V0cHV0czogcmVzID0gMSAoZGVsZXRlZCksIHJlcyA9IDAgKG5vdCBkZWxldGVkKSwgZXJyID0gbm90IGRlbGV0ZWRcblx0XHQvLyBTZWFyY2ggZm9yIGRvYywgaWYgZm91bmQgdGhlbiB0cnkgYW5kIHJlbW92ZVxuXHRcdHJlbW92ZURvY3VtZW50OiB7XG5cdFx0XHRjaGVjazogbmV3IFNpbXBsZVNjaGVtYSh7XG5cdFx0XHRcdGNvbGxlY3Rpb246IHtcblx0XHRcdFx0XHR0eXBlOiBTdHJpbmdcblx0XHRcdFx0fSxcblx0XHRcdFx0ZG9jX2lkOiB7XG5cdFx0XHRcdFx0dHlwZTogU3RyaW5nXG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0ZnVuY3Rpb246IGZ1bmN0aW9uKGNvbGxlY3Rpb246IHN0cmluZywgZG9jX2lkOiBzdHJpbmcpIHtcblx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblxuXHRcdFx0XHRcdExvZ3MuY3JlYXRlKHtcblx0XHRcdFx0XHRcdF9pZDogVHlwZXMuT2JqZWN0SWQoKS50b0hleFN0cmluZygpLFxuXHRcdFx0XHRcdFx0ZGF0ZTogbmV3IERhdGUoKSxcblx0XHRcdFx0XHRcdHR5cGU6ICdpbmZvJyxcblx0XHRcdFx0XHRcdHRpdGxlOiAnUmVtb3ZlIERvY3VtZW50Jyxcblx0XHRcdFx0XHRcdG1lc3NhZ2U6ICdVc2VyOiAnICsgdGhpcy51c2VyICsgJywgQ29sbGVjdGlvbiBUeXBlOiAnICsgY29sbGVjdGlvbixcblx0XHRcdFx0XHRcdHBheWxvYWQ6IHtfaWQ6IGRvY19pZH0sXG5cdFx0XHRcdFx0XHRtZXRob2Q6ICdyZW1vdmVEb2N1bWVudCcsXG5cdFx0XHRcdFx0XHR1c2VyOiB0aGlzLnVzZXIsXG5cdFx0XHRcdFx0XHRtZXNzYWdlSWQ6ICcnXG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRSZXNvbHZlSU9TZXJ2ZXIuZ2V0TWFpbkRCKCkubW9kZWwoY29sbGVjdGlvbikuZGVsZXRlT25lKHtfaWQ6IGRvY19pZH0pLmV4ZWMoKGVyciwgcmVzKSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAoZXJyKSB7XG5cdFx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1x0XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXMub2spO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdHJlbW92ZURvY3VtZW50V2l0aFF1ZXJ5OiB7XG5cdFx0XHRjaGVjazogbmV3IFNpbXBsZVNjaGVtYSh7XG5cdFx0XHRcdGNvbGxlY3Rpb246IHtcblx0XHRcdFx0XHR0eXBlOiBTdHJpbmdcblx0XHRcdFx0fSxcblx0XHRcdFx0cXVlcnk6IHtcblx0XHRcdFx0XHR0eXBlOiBPYmplY3QsXG5cdFx0XHRcdFx0YmxhY2tib3g6IHRydWVcblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHRmdW5jdGlvbjogZnVuY3Rpb24oY29sbGVjdGlvbjogc3RyaW5nLCBxdWVyeTogT2JqZWN0KSB7XG5cdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cblx0XHRcdFx0XHRMb2dzLmNyZWF0ZSh7XG5cdFx0XHRcdFx0XHRfaWQ6IFR5cGVzLk9iamVjdElkKCkudG9IZXhTdHJpbmcoKSxcblx0XHRcdFx0XHRcdGRhdGU6IG5ldyBEYXRlKCksXG5cdFx0XHRcdFx0XHR0eXBlOiAnaW5mbycsXG5cdFx0XHRcdFx0XHR0aXRsZTogJ1JlbW92ZSBEb2N1bWVudCAoUXVlcnkpJyxcblx0XHRcdFx0XHRcdG1lc3NhZ2U6ICdVc2VyOiAnICsgdGhpcy51c2VyICsgJywgQ29sbGVjdGlvbiBUeXBlOiAnICsgY29sbGVjdGlvbixcblx0XHRcdFx0XHRcdHBheWxvYWQ6IHtfaWQ6IHF1ZXJ5fSxcblx0XHRcdFx0XHRcdG1ldGhvZDogJ3JlbW92ZURvY3VtZW50V2l0aFF1ZXJ5Jyxcblx0XHRcdFx0XHRcdHVzZXI6IHRoaXMudXNlcixcblx0XHRcdFx0XHRcdG1lc3NhZ2VJZDogJydcblx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRNYWluREIoKS5tb2RlbChjb2xsZWN0aW9uKS5kZWxldGVPbmUocXVlcnkpLmV4ZWMoKGVyciwgcmVzKSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAoZXJyKSB7XG5cdFx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1x0XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXMub2spO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xufSJdfQ==
@@ -1 +1,2 @@
1
- "use strict";var __awaiter=this&&this.__awaiter||function(i,c,a,u){return new(a||(a=Promise))(function(e,t){function n(e){try{r(u.next(e))}catch(e){t(e)}}function o(e){try{r(u.throw(e))}catch(e){t(e)}}function r(t){t.done?e(t.value):new a(function(e){e(t.value)}).then(n,o)}r((u=u.apply(i,c||[])).next())})},__generator=this&&this.__generator||function(n,o){var r,i,c,e,a={label:0,sent:function(){if(1&c[0])throw c[1];return c[1]},trys:[],ops:[]};return e={next:t(0),throw:t(1),return:t(2)},"function"==typeof Symbol&&(e[Symbol.iterator]=function(){return this}),e;function t(t){return function(e){return function(t){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,i&&(c=2&t[0]?i.return:t[0]?i.throw||((c=i.return)&&c.call(i),0):i.next)&&!(c=c.call(i,t[1])).done)return c;switch(i=0,c&&(t=[2&t[0],c.value]),t[0]){case 0:case 1:c=t;break;case 4:return a.label++,{value:t[1],done:!1};case 5:a.label++,i=t[1],t=[0];continue;case 7:t=a.ops.pop(),a.trys.pop();continue;default:if(!(c=0<(c=a.trys).length&&c[c.length-1])&&(6===t[0]||2===t[0])){a=0;continue}if(3===t[0]&&(!c||t[1]>c[0]&&t[1]<c[3])){a.label=t[1];break}if(6===t[0]&&a.label<c[1]){a.label=c[1],c=t;break}if(c&&a.label<c[2]){a.label=c[2],a.ops.push(t);break}c[2]&&a.ops.pop(),a.trys.pop();continue}t=o.call(n,a)}catch(e){t=[6,e],i=0}finally{r=c=0}if(5&t[0])throw t[1];return{value:t[0]?t[1]:void 0,done:!0}}([t,e])}}};Object.defineProperty(exports,"__esModule",{value:!0});var mongoose_1=require("mongoose"),counter_collection_1=require("../collections/counter.collection"),simpl_schema_1=require("simpl-schema"),__1=require("..");function loadCounterMethods(e){e.methods({incCounter:{skipQueue:!0,check:new simpl_schema_1.default({counterType:{type:String}}),function:function(o){var t=this;return new Promise(function(n,e){return __awaiter(t,void 0,void 0,function(){var t;return __generator(this,function(e){switch(e.label){case 0:return[4,counter_collection_1.Counters.findOne({type:o})];case 1:return e.sent()?[3,2]:(counter_collection_1.Counters.create({_id:mongoose_1.Types.ObjectId().toHexString(),count:2,type:o}),n(1),[3,4]);case 2:return[4,counter_collection_1.Counters.findOneAndUpdate({type:o},{$inc:{count:1}}).exec()];case 3:t=e.sent(),n(t.count),e.label=4;case 4:return[2]}})})})}},countCollectionWithQuery:{skipQueue:!0,check:new simpl_schema_1.default({collectionType:{type:String},query:{type:Object,blackbox:!0}}),function:function(e,t){return __1.default.getMainDB().model(e).collection.countDocuments(t)}},countQuery:{skipQueue:!0,check:new simpl_schema_1.default({collectionType:{type:String},search:{type:String,optional:!0},filters:simpl_schema_1.default.oneOf({type:Array,optional:!0},{type:Object,blackbox:!0,optional:!0}),"filters.$":{type:Object,optional:!0,blackbox:!0},subType:{type:String,optional:!0}}),function:function(e,t,n){void 0===t&&(t=""),void 0===n&&(n=[]);var o={};if(t||n&&n.length){if(n&&n.length&&(o.$and=[],n.forEach(function(e){var t;n.filter(function(e){return"job"===e.prop}).length?(n.filter(function(e){return"job"===e.prop})[0].data?o.$and.push({$or:[{type:"request"},{type:"initIso"},{type:"return"},{type:"returnIso"},{type:"transferOut"},{type:"transferIn"}]}):o.$and.push({$or:[{type:"Customer Pickup"},{type:"Direct Sale"},{type:"Third Party"},{type:"Sale Return"},{type:"transferYard"}]}),n.splice(n.map(function(e){return e.prop}).indexOf("job"),1)):o.$and.push(((t={})[e.prop]=e.data,t))})),t&&"jobs"===e){var r={$regex:".*"+(t||"")+".*",$options:"i"};o.$and?o.$and.push({$or:[{status:r},{operator:r},{pumping_company:r},{afe:r},{po:r},{county:r},{state:r},{well:r}]}):o={$or:[{status:r},{operator:r},{pumping_company:r},{afe:r},{po:r},{county:r},{state:r},{well:r}]}}else if(t&&"chemicals"===e){r={$regex:".*"+(t||"")+".*",$options:"i"};o.$and?o.$and.push({$or:[{chemical_category:r},{container:r},{type:r},{description:r},{quantity_string:r},{unit:r},{min_stock_string:r},{max_stock_string:r}]}):o={$or:[{chemical_category:r},{container:r},{type:r},{description:r},{quantity_string:r},{unit:r},{min_stock_string:r},{max_stock_string:r}]}}else if(t&&"bols"===e){r={$regex:".*"+(t||"")+".*",$options:"i"};o.$and?o.$and.push({$or:[{date_string:r},{bol_string:r},{chemical:r},{locTo:r},{locFrom:r},{quantity_string:r},{file_status:r}]}):o={$or:[{date_string:r},{bol_string:r},{chemical:r},{locTo:r},{locFrom:r},{quantity_string:r},{file_status:r}]}}else if(t&&"isotanks"===e){r={$regex:".*"+(t||"")+".*",$options:"i"};o.$and?o.$and.push({$or:[{tank_number:r},{quantity_string:r},{current_location:r},{current_chemical:r}]}):o={$or:[{tank_number:r},{quantity_string:r},{current_location:r},{current_chemical:r}]}}}else o={};return __1.default.getMainDB().model(e).collection.countDocuments(o)}},countCollection:{skipQueue:!0,check:new simpl_schema_1.default({collectionType:{type:String}}),function:function(e){return __1.default.getMainDB().model(e).collection.countDocuments()}}})}exports.loadCounterMethods=loadCounterMethods;
1
+ "use strict";var __awaiter=this&&this.__awaiter||function(i,c,a,u){return new(a||(a=Promise))(function(e,t){function n(e){try{r(u.next(e))}catch(e){t(e)}}function o(e){try{r(u.throw(e))}catch(e){t(e)}}function r(t){t.done?e(t.value):new a(function(e){e(t.value)}).then(n,o)}r((u=u.apply(i,c||[])).next())})},__generator=this&&this.__generator||function(n,o){var r,i,c,e,a={label:0,sent:function(){if(1&c[0])throw c[1];return c[1]},trys:[],ops:[]};return e={next:t(0),throw:t(1),return:t(2)},"function"==typeof Symbol&&(e[Symbol.iterator]=function(){return this}),e;function t(t){return function(e){return function(t){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,i&&(c=2&t[0]?i.return:t[0]?i.throw||((c=i.return)&&c.call(i),0):i.next)&&!(c=c.call(i,t[1])).done)return c;switch(i=0,c&&(t=[2&t[0],c.value]),t[0]){case 0:case 1:c=t;break;case 4:return a.label++,{value:t[1],done:!1};case 5:a.label++,i=t[1],t=[0];continue;case 7:t=a.ops.pop(),a.trys.pop();continue;default:if(!(c=0<(c=a.trys).length&&c[c.length-1])&&(6===t[0]||2===t[0])){a=0;continue}if(3===t[0]&&(!c||t[1]>c[0]&&t[1]<c[3])){a.label=t[1];break}if(6===t[0]&&a.label<c[1]){a.label=c[1],c=t;break}if(c&&a.label<c[2]){a.label=c[2],a.ops.push(t);break}c[2]&&a.ops.pop(),a.trys.pop();continue}t=o.call(n,a)}catch(e){t=[6,e],i=0}finally{r=c=0}if(5&t[0])throw t[1];return{value:t[0]?t[1]:void 0,done:!0}}([t,e])}}};Object.defineProperty(exports,"__esModule",{value:!0});var mongoose_1=require("mongoose"),counter_collection_1=require("../collections/counter.collection"),simpl_schema_1=require("simpl-schema"),__1=require("..");function loadCounterMethods(e){e.methods({incCounter:{skipQueue:!0,check:new simpl_schema_1.default({counterType:{type:String}}),function:function(o){var t=this;return new Promise(function(n,e){return __awaiter(t,void 0,void 0,function(){var t;return __generator(this,function(e){switch(e.label){case 0:return[4,counter_collection_1.Counters.findOne({type:o})];case 1:return e.sent()?[3,2]:(counter_collection_1.Counters.create({_id:mongoose_1.Types.ObjectId().toHexString(),count:2,type:o}),n(1),[3,4]);case 2:return[4,counter_collection_1.Counters.findOneAndUpdate({type:o},{$inc:{count:1}}).exec()];case 3:t=e.sent(),n(t.count),e.label=4;case 4:return[2]}})})})}},countCollectionWithQuery:{skipQueue:!0,check:new simpl_schema_1.default({collectionType:{type:String},query:{type:Object,blackbox:!0}}),function:function(e,t){return __1.default.getMainDB().model(e).collection.countDocuments(t)}},countQuery:{skipQueue:!0,check:new simpl_schema_1.default({collectionType:{type:String},search:{type:String,optional:!0},filters:simpl_schema_1.default.oneOf({type:Array,optional:!0},{type:Object,blackbox:!0,optional:!0}),"filters.$":{type:Object,optional:!0,blackbox:!0},subType:{type:String,optional:!0}}),function:function(e,t,n){void 0===t&&(t=""),void 0===n&&(n=[]);var o={};if(t||n&&n.length){if(n&&n.length&&(o.$and=[],n.forEach(function(e){var t;n.filter(function(e){return"job"===e.prop}).length?(n.filter(function(e){return"job"===e.prop})[0].data?o.$and.push({$or:[{type:"request"},{type:"initIso"},{type:"return"},{type:"returnIso"},{type:"transferOut"},{type:"transferIn"}]}):o.$and.push({$or:[{type:"Customer Pickup"},{type:"Direct Sale"},{type:"Third Party"},{type:"Sale Return"},{type:"transferYard"}]}),n.splice(n.map(function(e){return e.prop}).indexOf("job"),1)):o.$and.push(((t={})[e.prop]=e.data,t))})),t&&"jobs"===e){var r={$regex:".*"+(t||"")+".*",$options:"i"};o.$and?o.$and.push({$or:[{status:r},{operator:r},{pumping_company:r},{afe:r},{po:r},{county:r},{state:r},{well:r}]}):o={$or:[{status:r},{operator:r},{pumping_company:r},{afe:r},{po:r},{county:r},{state:r},{well:r}]}}else if(t&&"chemicals"===e){r={$regex:".*"+(t||"")+".*",$options:"i"};o.$and?o.$and.push({$or:[{chemical_category:r},{container:r},{type:r},{description:r},{quantity_string:r},{unit:r},{min_stock_string:r},{max_stock_string:r}]}):o={$or:[{chemical_category:r},{container:r},{type:r},{description:r},{quantity_string:r},{unit:r},{min_stock_string:r},{max_stock_string:r}]}}else if(t&&"bols"===e){r={$regex:".*"+(t||"")+".*",$options:"i"};o.$and?o.$and.push({$or:[{date_string:r},{bol_string:r},{chemical:r},{locTo:r},{locFrom:r},{quantity_string:r},{file_status:r}]}):o={$or:[{date_string:r},{bol_string:r},{chemical:r},{locTo:r},{locFrom:r},{quantity_string:r},{file_status:r}]}}else if(t&&"isotanks"===e){r={$regex:".*"+(t||"")+".*",$options:"i"};o.$and?o.$and.push({$or:[{tank_number:r},{quantity_string:r},{current_location:r},{current_chemical:r}]}):o={$or:[{tank_number:r},{quantity_string:r},{current_location:r},{current_chemical:r}]}}}else o={};return __1.default.getMainDB().model(e).collection.countDocuments(o)}},countCollection:{skipQueue:!0,check:new simpl_schema_1.default({collectionType:{type:String}}),function:function(e){return __1.default.getMainDB().model(e).collection.countDocuments()}}})}exports.loadCounterMethods=loadCounterMethods;
2
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZXRob2RzL2NvdW50ZXJzLnRzIl0sIm5hbWVzIjpbIm1vbmdvb3NlXzEiLCJyZXF1aXJlIiwiY291bnRlcl9jb2xsZWN0aW9uXzEiLCJzaW1wbF9zY2hlbWFfMSIsIl9fMSIsImxvYWRDb3VudGVyTWV0aG9kcyIsIm1ldGhvZE1hbmFnZXIiLCJtZXRob2RzIiwiaW5jQ291bnRlciIsInNraXBRdWV1ZSIsImNoZWNrIiwiZGVmYXVsdCIsImNvdW50ZXJUeXBlIiwidHlwZSIsIlN0cmluZyIsImZ1bmN0aW9uIiwiX3RoaXMiLCJ0aGlzIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJfX2F3YWl0ZXIiLCJDb3VudGVycyIsImZpbmRPbmUiLCJfYSIsInNlbnQiLCJjcmVhdGUiLCJfaWQiLCJUeXBlcyIsIk9iamVjdElkIiwidG9IZXhTdHJpbmciLCJjb3VudCIsImZpbmRPbmVBbmRVcGRhdGUiLCIkaW5jIiwiZXhlYyIsIm5ld0NvdW50IiwiY291bnRDb2xsZWN0aW9uV2l0aFF1ZXJ5IiwiY29sbGVjdGlvblR5cGUiLCJxdWVyeSIsIk9iamVjdCIsImJsYWNrYm94IiwiZ2V0TWFpbkRCIiwibW9kZWwiLCJjb2xsZWN0aW9uIiwiY291bnREb2N1bWVudHMiLCJjb3VudFF1ZXJ5Iiwic2VhcmNoIiwib3B0aW9uYWwiLCJmaWx0ZXJzIiwib25lT2YiLCJBcnJheSIsImZpbHRlcnMuJCIsInN1YlR5cGUiLCJsZW5ndGgiLCJmb3JFYWNoIiwiZmlsdGVyIiwiYSIsInByb3AiLCJkYXRhIiwicHVzaCIsIiRvciIsInNwbGljZSIsIm1hcCIsImluZGV4T2YiLCJzZWFyY2hSZWdFeCIsIiRyZWdleCIsIiRvcHRpb25zIiwic3RhdHVzIiwib3BlcmF0b3IiLCJwdW1waW5nX2NvbXBhbnkiLCJhZmUiLCJwbyIsImNvdW50eSIsInN0YXRlIiwid2VsbCIsImNoZW1pY2FsX2NhdGVnb3J5IiwiY29udGFpbmVyIiwiZGVzY3JpcHRpb24iLCJxdWFudGl0eV9zdHJpbmciLCJ1bml0IiwibWluX3N0b2NrX3N0cmluZyIsIm1heF9zdG9ja19zdHJpbmciLCJkYXRlX3N0cmluZyIsImJvbF9zdHJpbmciLCJjaGVtaWNhbCIsImxvY1RvIiwibG9jRnJvbSIsImZpbGVfc3RhdHVzIiwidGFua19udW1iZXIiLCJjdXJyZW50X2xvY2F0aW9uIiwiY3VycmVudF9jaGVtaWNhbCIsImNvdW50Q29sbGVjdGlvbiIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJvN0NBQUEsSUFBQUEsV0FBQUMsUUFBQSxZQUVBQyxxQkFBQUQsUUFBQSxxQ0FDQUUsZUFBQUYsUUFBQSxnQkFDQUcsSUFBQUgsUUFBQSxNQUVBLFNBQWdCSSxtQkFBbUJDLEdBQ2xDQSxFQUFjQyxRQUFRLENBQ3JCQyxXQUFZLENBQ1hDLFdBQVcsRUFDWEMsTUFBTyxJQUFJUCxlQUFBUSxRQUFhLENBQ3ZCQyxZQUFhLENBQ1pDLEtBQU1DLFVBR1JDLFNBQVUsU0FBU0gsR0FBVCxJQUFBSSxFQUFBQyxLQUNULE9BQU8sSUFBSUMsUUFBUSxTQUFPQyxFQUFTQyxHQUFNLE9BQUFDLFVBQUFMLE9BQUEsT0FBQSxFQUFBLDRFQUMxQixNQUFBLENBQUEsRUFBTWQscUJBQUFvQixTQUFTQyxRQUFRLENBQUNWLEtBQU1ELG1CQUE5QlksRUFBQUMsT0FFVixDQUFBLEVBQUEsSUFDSHZCLHFCQUFBb0IsU0FBU0ksT0FBTyxDQUNmQyxJQUFLM0IsV0FBQTRCLE1BQU1DLFdBQVdDLGNBQ3RCQyxNQUFPLEVBQ1BsQixLQUFNRCxJQUdQTyxFQUFRLGlCQUdPLE1BQUEsQ0FBQSxFQUFNakIscUJBQUFvQixTQUFTVSxpQkFBaUIsQ0FBQ25CLEtBQU1ELEdBQWMsQ0FBQ3FCLEtBQU0sQ0FBQ0YsTUFBTyxLQUFLRyxlQUFwRkMsRUFBV1gsRUFBQUMsT0FFZk4sRUFBUWdCLEVBQVNKLDJDQUtyQksseUJBQTBCLENBQ3pCM0IsV0FBVyxFQUNYQyxNQUFPLElBQUlQLGVBQUFRLFFBQWEsQ0FDdkIwQixlQUFnQixDQUNmeEIsS0FBTUMs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QmQsR0FFbEIsQ0FDQ3lCLGlCQUFrQnpCLEdBRW5CLENBQ0MwQixpQkFBa0IxQixXQXBRdkIxQixFQUFRLEdBNFFULE9BQU9sQyxJQUFBTyxRQUFnQjhCLFlBQVlDLE1BQU1MLEdBQWdCTSxXQUFXQyxlQUFlTixLQUdyRnFELGdCQUFpQixDQUNoQmxGLFdBQVcsRUFDWEMsTUFBTyxJQUFJUCxlQUFBUSxRQUFhLENBQ3ZCMEIsZUFBZ0IsQ0FDZnhCLEtBQU1DLFVBR1JDLFNBQVUsU0FBU3NCLEdBQ2xCLE9BQU9qQyxJQUFBTyxRQUFnQjhCLFlBQVlDLE1BQU1MLEdBQWdCTSxXQUFXQyxxQkF2V3hFZ0QsUUFBQXZGLG1CQUFBQSIsImZpbGUiOiJtZXRob2RzL2NvdW50ZXJzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZXMgfSBmcm9tICdtb25nb29zZSc7XG5pbXBvcnQgeyBNZXRob2RNYW5hZ2VyIH0gZnJvbSAnLi4vbWFuYWdlcnMvbWV0aG9kLm1hbmFnZXInO1xuaW1wb3J0IHsgQ291bnRlcnMgfSBmcm9tICcuLi9jb2xsZWN0aW9ucy9jb3VudGVyLmNvbGxlY3Rpb24nO1xuaW1wb3J0IFNpbXBsZVNjaGVtYSBmcm9tICdzaW1wbC1zY2hlbWEnO1xuaW1wb3J0IFJlc29sdmVJT1NlcnZlciBmcm9tICcuLic7XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQ291bnRlck1ldGhvZHMobWV0aG9kTWFuYWdlcjogTWV0aG9kTWFuYWdlcikge1xuXHRtZXRob2RNYW5hZ2VyLm1ldGhvZHMoe1xuXHRcdGluY0NvdW50ZXI6IHtcblx0XHRcdHNraXBRdWV1ZTogdHJ1ZSxcblx0XHRcdGNoZWNrOiBuZXcgU2ltcGxlU2NoZW1hKHtcblx0XHRcdFx0Y291bnRlclR5cGU6IHtcblx0XHRcdFx0XHR0eXBlOiBTdHJpbmdcblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHRmdW5jdGlvbjogZnVuY3Rpb24oY291bnRlclR5cGU6IHN0cmluZykge1xuXHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0XHRcdGxldCBjb3VudGVyID0gYXdhaXQgQ291bnRlcnMuZmluZE9uZSh7dHlwZTogY291bnRlclR5cGV9KTtcblxuXHRcdFx0XHRcdGlmICghY291bnRlcikge1xuXHRcdFx0XHRcdFx0Q291bnRlcnMuY3JlYXRlKHtcblx0XHRcdFx0XHRcdFx0X2lkOiBUeXBlcy5PYmplY3RJZCgpLnRvSGV4U3RyaW5nKCksXG5cdFx0XHRcdFx0XHRcdGNvdW50OiAyLFxuXHRcdFx0XHRcdFx0XHR0eXBlOiBjb3VudGVyVHlwZVxuXHRcdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRcdHJlc29sdmUoMSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0bGV0IG5ld0NvdW50ID0gYXdhaXQgQ291bnRlcnMuZmluZE9uZUFuZFVwZGF0ZSh7dHlwZTogY291bnRlclR5cGV9LCB7JGluYzoge2NvdW50OiAxfX0pLmV4ZWMoKTtcblxuXHRcdFx0XHRcdFx0cmVzb2x2ZShuZXdDb3VudC5jb3VudCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdGNvdW50Q29sbGVjdGlvbldpdGhRdWVyeToge1xuXHRcdFx0c2tpcFF1ZXVlOiB0cnVlLFxuXHRcdFx0Y2hlY2s6IG5ldyBTaW1wbGVTY2hlbWEoe1xuXHRcdFx0XHRjb2xsZWN0aW9uVHlwZToge1xuXHRcdFx0XHRcdHR5cGU6IFN0cmluZ1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRxdWVyeToge1xuXHRcdFx0XHRcdHR5cGU6IE9iamVjdCxcblx0XHRcdFx0XHRibGFja2JveDogdHJ1ZVxuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdGZ1bmN0aW9uOiBmdW5jdGlvbihjb2xsZWN0aW9uVHlwZTogc3RyaW5nLCBxdWVyeTogT2JqZWN0KSB7XHRcblx0XHRcdFx0cmV0dXJuIFJlc29sdmVJT1NlcnZlci5nZXRNYWluREIoKS5tb2RlbChjb2xsZWN0aW9uVHlwZSkuY29sbGVjdGlvbi5jb3VudERvY3VtZW50cyhxdWVyeSk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRjb3VudFF1ZXJ5OiB7XG5cdFx0XHRza2lwUXVldWU6IHRydWUsXG5cdFx0XHRjaGVjazogbmV3IFNpbXBsZVNjaGVtYSh7XG5cdFx0XHRcdGNvbGxlY3Rpb25UeXBlOiB7XG5cdFx0XHRcdFx0dHlwZTogU3RyaW5nXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNlYXJjaDoge1xuXHRcdFx0XHRcdHR5cGU6IFN0cmluZyxcblx0XHRcdFx0XHRvcHRpb25hbDogdHJ1ZVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRmaWx0ZXJzOiBTaW1wbGVTY2hlbWEub25lT2YoXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0dHlwZTogQXJyYXksXG5cdFx0XHRcdFx0XHRvcHRpb25hbDogdHJ1ZVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0dHlwZTogT2JqZWN0LFxuXHRcdFx0XHRcdFx0YmxhY2tib3g6IHRydWUsXG5cdFx0XHRcdFx0XHRvcHRpb25hbDogdHJ1ZVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KSxcblx0XHRcdFx0J2ZpbHRlcnMuJCc6IHtcblx0XHRcdFx0XHR0eXBlOiBPYmplY3QsXG5cdFx0XHRcdFx0b3B0aW9uYWw6IHRydWUsXG5cdFx0XHRcdFx0YmxhY2tib3g6IHRydWVcblx0XHRcdFx0fSwgXG5cdFx0XHRcdHN1YlR5cGU6IHtcblx0XHRcdFx0XHR0eXBlOiBTdHJpbmcsXG5cdFx0XHRcdFx0b3B0aW9uYWw6IHRydWVcblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHRmdW5jdGlvbjogZnVuY3Rpb24oY29sbGVjdGlvblR5cGU6IHN0cmluZywgc2VhcmNoID0gJycsIGZpbHRlcnMgPSBbXSkge1xuXHRcdFx0XHRsZXQgcXVlcnkgPSB7fTtcblxuXHRcdFx0XHRpZiAoIXNlYXJjaCAmJiAoIWZpbHRlcnMgfHwgIWZpbHRlcnMubGVuZ3RoKSkge1xuXHRcdFx0XHRcdHF1ZXJ5ID0ge307XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0aWYgKGZpbHRlcnMgJiYgZmlsdGVycy5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdHF1ZXJ5WyckYW5kJ10gPSBbXTtcblxuXHRcdFx0XHRcdFx0ZmlsdGVycy5mb3JFYWNoKGZpbHRlciA9PiB7XG5cdFx0XHRcdFx0XHRcdGlmIChmaWx0ZXJzLmZpbHRlcihhID0+IGEucHJvcCA9PT0gJ2pvYicpLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0XHRcdGlmIChmaWx0ZXJzLmZpbHRlcihhID0+IGEucHJvcCA9PT0gJ2pvYicpWzBdLmRhdGEpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHF1ZXJ5WyckYW5kJ10ucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCRvcjogW1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHt0eXBlOiAncmVxdWVzdCd9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHt0eXBlOiAnaW5pdElzbyd9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHt0eXBlOiAncmV0dXJuJ30sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0e3R5cGU6ICdyZXR1cm5Jc28nfSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7dHlwZTogJ3RyYW5zZmVyT3V0J30sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0e3R5cGU6ICd0cmFuc2ZlckluJ31cblx0XHRcdFx0XHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0cXVlcnlbJyRhbmQnXS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0JG9yOiBbXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0e3R5cGU6ICdDdXN0b21lciBQaWNrdXAnfSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7dHlwZTogJ0RpcmVjdCBTYWxlJ30sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0e3R5cGU6ICdUaGlyZCBQYXJ0eSd9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHt0eXBlOiAnU2FsZSBSZXR1cm4nfSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7dHlwZTogJ3RyYW5zZmVyWWFyZCd9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRmaWx0ZXJzLnNwbGljZShmaWx0ZXJzLm1hcChhID0+IGEucHJvcCkuaW5kZXhPZignam9iJyksIDEpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdHF1ZXJ5WyckYW5kJ10ucHVzaCh7W2ZpbHRlclsncHJvcCddXTogZmlsdGVyWydkYXRhJ119KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKHNlYXJjaCAmJiBjb2xsZWN0aW9uVHlwZSA9PT0gJ2pvYnMnKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBzZWFyY2hSZWdFeCA9IHsgJyRyZWdleCc6ICcuKicgKyAoc2VhcmNoIHx8ICcnKSArICcuKicsICckb3B0aW9ucyc6ICdpJyB9O1xuXG5cdFx0XHRcdFx0XHRpZiAocXVlcnlbJyRhbmQnXSkge1xuXHRcdFx0XHRcdFx0XHRxdWVyeVsnJGFuZCddLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdCRvcjogW1xuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRzdGF0dXM6IHNlYXJjaFJlZ0V4XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRvcGVyYXRvcjogc2VhcmNoUmVnRXhcblx0XHRcdFx0XHRcdFx0XHRcdH0sIFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRwdW1waW5nX2NvbXBhbnk6IHNlYXJjaFJlZ0V4XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhZmU6IHNlYXJjaFJlZ0V4XG5cdFx0XHRcdFx0XHRcdFx0XHR9LCBcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cG86IHNlYXJjaFJlZ0V4XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb3VudHk6IHNlYXJjaFJlZ0V4XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRzdGF0ZTogc2VhcmNoUmVnRXhcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHdlbGw6IHNlYXJjaFJlZ0V4XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRxdWVyeSA9IHtcblx0XHRcdFx0XHRcdFx0XHQkb3I6IFtcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0c3RhdHVzOiBzZWFyY2hSZWdFeFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0b3BlcmF0b3I6IHNlYXJjaFJlZ0V4XG5cdFx0XHRcdFx0XHRcdFx0XHR9LCBcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cHVtcGluZ19jb21wYW55OiBzZWFyY2hSZWdFeFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YWZlOiBzZWFyY2hSZWdFeFxuXHRcdFx0XHRcdFx0XHRcdFx0fSwgXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHBvOiBzZWFyY2hSZWdFeFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y291bnR5OiBzZWFyY2hSZWdFeFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0c3RhdGU6IHNlYXJjaFJlZ0V4XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR3ZWxsOiBzZWFyY2hSZWdFeFxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZWxzZSBpZiAoc2VhcmNoICYmIGNvbGxlY3Rpb25UeXBlID09PSAnY2hlbWljYWxzJykge1xuXHRcdFx0XHRcdFx0Y29uc3Qgc2VhcmNoUmVnRXggPSB7ICckcmVnZXgnOiAnLionICsgKHNlYXJjaCB8fCAnJykgKyAnLionLCAnJG9wdGlvbnMnOiAnaScgfTtcblxuXHRcdFx0XHRcdFx0aWYgKHF1ZXJ5WyckYW5kJ10pIHtcblx0XHRcdFx0XHRcdFx0cXVlcnlbJyRhbmQnXS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHQkb3I6IFtcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2hlbWljYWxfY2F0ZWdvcnk6IHNlYXJjaFJlZ0V4XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb250YWluZXI6IHNlYXJjaFJlZ0V4XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiBzZWFyY2hSZWdFeFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHNlYXJjaFJlZ0V4XG5cdFx0XHRcdFx0XHRcdFx0XHR9LCBcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cXVhbnRpdHlfc3RyaW5nOiBzZWFyY2hSZWdFeFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dW5pdDogc2VhcmNoUmVnRXhcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG1pbl9zdG9ja19zdHJpbmc6IHNlYXJjaFJlZ0V4XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRtYXhfc3RvY2tfc3RyaW5nOiBzZWFyY2hSZWdFeFxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9XHRcblx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRxdWVyeSA9IHtcblx0XHRcdFx0XHRcdFx0XHQkb3I6IFtcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2hlbWljYWxfY2F0ZWdvcnk6IHNlYXJjaFJlZ0V4XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb250YWluZXI6IHNlYXJjaFJlZ0V4XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiBzZWFyY2hSZWdFeFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHNlYXJjaFJlZ0V4XG5cdFx0XHRcdFx0XHRcdFx0XHR9LCBcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cXVhbnRpdHlfc3RyaW5nOiBzZWFyY2hSZWdFeFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dW5pdDogc2VhcmNoUmVnRXhcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG1pbl9zdG9ja19zdHJpbmc6IHNlYXJjaFJlZ0V4XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRtYXhfc3RvY2tfc3RyaW5nOiBzZWFyY2hSZWdFeFxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZWxzZSBpZiAoc2VhcmNoICYmIGNvbGxlY3Rpb25UeXBlID09PSAnYm9scycpIHtcblx0XHRcdFx0XHRcdGNvbnN0IHNlYXJjaFJlZ0V4ID0geyAnJHJlZ2V4JzogJy4qJyArIChzZWFyY2ggfHwgJycpICsgJy4qJywgJyRvcHRpb25zJzogJ2knIH07XG5cblx0XHRcdFx0XHRcdGlmIChxdWVyeVsnJGFuZCddKSB7XG5cblx0XHRcdFx0XHRcdFx0cXVlcnlbJyRhbmQnXS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHQkb3I6IFtcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZGF0ZV9zdHJpbmc6IHNlYXJjaFJlZ0V4XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRib2xfc3RyaW5nOiBzZWFyY2hSZWdFeFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcdFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjaGVtaWNhbDogc2VhcmNoUmVnRXhcblx0XHRcdFx0XHRcdFx0XHRcdH0sIFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRsb2NUbzogc2VhcmNoUmVnRXhcblx0XHRcdFx0XHRcdFx0XHRcdH0sIFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRsb2NGcm9tOiBzZWFyY2hSZWdFeFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cXVhbnRpdHlfc3RyaW5nOiBzZWFyY2hSZWdFeFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZmlsZV9zdGF0dXM6IHNlYXJjaFJlZ0V4XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cdFxuXHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHF1ZXJ5ID0ge1xuXHRcdFx0XHRcdFx0XHRcdCRvcjogW1xuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRkYXRlX3N0cmluZzogc2VhcmNoUmVnRXhcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJvbF9zdHJpbmc6IHNlYXJjaFJlZ0V4XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFx0XG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNoZW1pY2FsOiBzZWFyY2hSZWdFeFxuXHRcdFx0XHRcdFx0XHRcdFx0fSwgXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxvY1RvOiBzZWFyY2hSZWdFeFxuXHRcdFx0XHRcdFx0XHRcdFx0fSwgXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxvY0Zyb206IHNlYXJjaFJlZ0V4XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRxdWFudGl0eV9zdHJpbmc6IHNlYXJjaFJlZ0V4XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmaWxlX3N0YXR1czogc2VhcmNoUmVnRXhcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRdXG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2UgaWYgKHNlYXJjaCAmJiBjb2xsZWN0aW9uVHlwZSA9PT0gJ2lzb3RhbmtzJykge1xuXHRcdFx0XHRcdFx0Y29uc3Qgc2VhcmNoUmVnRXggPSB7ICckcmVnZXgnOiAnLionICsgKHNlYXJjaCB8fCAnJykgKyAnLionLCAnJG9wdGlvbnMnOiAnaScgfTtcblxuXHRcdFx0XHRcdFx0aWYgKHF1ZXJ5WyckYW5kJ10pIHtcblx0XHRcdFx0XHRcdFx0cXVlcnlbJyRhbmQnXS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHQkb3I6IFtcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGFua19udW1iZXI6IHNlYXJjaFJlZ0V4XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRxdWFudGl0eV9zdHJpbmc6IHNlYXJjaFJlZ0V4XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjdXJyZW50X2xvY2F0aW9uOiBzZWFyY2hSZWdFeFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y3VycmVudF9jaGVtaWNhbDogc2VhcmNoUmVnRXhcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRdXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fVx0XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0cXVlcnkgPSB7XG5cdFx0XHRcdFx0XHRcdFx0JG9yOiBbXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRhbmtfbnVtYmVyOiBzZWFyY2hSZWdFeFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cXVhbnRpdHlfc3RyaW5nOiBzZWFyY2hSZWdFeFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y3VycmVudF9sb2NhdGlvbjogc2VhcmNoUmVnRXhcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRfY2hlbWljYWw6IHNlYXJjaFJlZ0V4XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFxuXHRcdFx0XHRyZXR1cm4gUmVzb2x2ZUlPU2VydmVyLmdldE1haW5EQigpLm1vZGVsKGNvbGxlY3Rpb25UeXBlKS5jb2xsZWN0aW9uLmNvdW50RG9jdW1lbnRzKHF1ZXJ5KTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdGNvdW50Q29sbGVjdGlvbjoge1xuXHRcdFx0c2tpcFF1ZXVlOiB0cnVlLFxuXHRcdFx0Y2hlY2s6IG5ldyBTaW1wbGVTY2hlbWEoe1xuXHRcdFx0XHRjb2xsZWN0aW9uVHlwZToge1xuXHRcdFx0XHRcdHR5cGU6IFN0cmluZ1xuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdGZ1bmN0aW9uOiBmdW5jdGlvbihjb2xsZWN0aW9uVHlwZTogc3RyaW5nKSB7XHRcblx0XHRcdFx0cmV0dXJuIFJlc29sdmVJT1NlcnZlci5nZXRNYWluREIoKS5tb2RlbChjb2xsZWN0aW9uVHlwZSkuY29sbGVjdGlvbi5jb3VudERvY3VtZW50cygpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG59Il19
@@ -1 +1,2 @@
1
- "use strict";var __awaiter=this&&this.__awaiter||function(u,i,a,c){return new(a||(a=Promise))(function(e,t){function n(e){try{r(c.next(e))}catch(e){t(e)}}function o(e){try{r(c.throw(e))}catch(e){t(e)}}function r(t){t.done?e(t.value):new a(function(e){e(t.value)}).then(n,o)}r((c=c.apply(u,i||[])).next())})},__generator=this&&this.__generator||function(n,o){var r,u,i,e,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return e={next:t(0),throw:t(1),return:t(2)},"function"==typeof Symbol&&(e[Symbol.iterator]=function(){return this}),e;function t(t){return function(e){return function(t){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,u&&(i=2&t[0]?u.return:t[0]?u.throw||((i=u.return)&&i.call(u),0):u.next)&&!(i=i.call(u,t[1])).done)return i;switch(u=0,i&&(t=[2&t[0],i.value]),t[0]){case 0:case 1:i=t;break;case 4:return a.label++,{value:t[1],done:!1};case 5:a.label++,u=t[1],t=[0];continue;case 7:t=a.ops.pop(),a.trys.pop();continue;default:if(!(i=0<(i=a.trys).length&&i[i.length-1])&&(6===t[0]||2===t[0])){a=0;continue}if(3===t[0]&&(!i||t[1]>i[0]&&t[1]<i[3])){a.label=t[1];break}if(6===t[0]&&a.label<i[1]){a.label=i[1],i=t;break}if(i&&a.label<i[2]){a.label=i[2],a.ops.push(t);break}i[2]&&a.ops.pop(),a.trys.pop();continue}t=o.call(n,a)}catch(e){t=[6,e],u=0}finally{r=i=0}if(5&t[0])throw t[1];return{value:t[0]?t[1]:void 0,done:!0}}([t,e])}}};Object.defineProperty(exports,"__esModule",{value:!0});var queue_method_collection_1=require("../collections/queue-method.collection");function loadCronJobMethods(o){o.methods({methodQueue:{function:function(){var n=this;return new Promise(function(t,e){return __awaiter(n,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return[4,queue_method_collection_1.QueueMethods.collection.countDocuments()];case 1:return e.sent()&&o.getMainServer().getQueueManager().runMethodQueue(),t(),[2]}})})})}}})}exports.loadCronJobMethods=loadCronJobMethods;
1
+ "use strict";var __awaiter=this&&this.__awaiter||function(u,i,a,c){return new(a||(a=Promise))(function(e,t){function n(e){try{r(c.next(e))}catch(e){t(e)}}function o(e){try{r(c.throw(e))}catch(e){t(e)}}function r(t){t.done?e(t.value):new a(function(e){e(t.value)}).then(n,o)}r((c=c.apply(u,i||[])).next())})},__generator=this&&this.__generator||function(n,o){var r,u,i,e,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return e={next:t(0),throw:t(1),return:t(2)},"function"==typeof Symbol&&(e[Symbol.iterator]=function(){return this}),e;function t(t){return function(e){return function(t){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,u&&(i=2&t[0]?u.return:t[0]?u.throw||((i=u.return)&&i.call(u),0):u.next)&&!(i=i.call(u,t[1])).done)return i;switch(u=0,i&&(t=[2&t[0],i.value]),t[0]){case 0:case 1:i=t;break;case 4:return a.label++,{value:t[1],done:!1};case 5:a.label++,u=t[1],t=[0];continue;case 7:t=a.ops.pop(),a.trys.pop();continue;default:if(!(i=0<(i=a.trys).length&&i[i.length-1])&&(6===t[0]||2===t[0])){a=0;continue}if(3===t[0]&&(!i||t[1]>i[0]&&t[1]<i[3])){a.label=t[1];break}if(6===t[0]&&a.label<i[1]){a.label=i[1],i=t;break}if(i&&a.label<i[2]){a.label=i[2],a.ops.push(t);break}i[2]&&a.ops.pop(),a.trys.pop();continue}t=o.call(n,a)}catch(e){t=[6,e],u=0}finally{r=i=0}if(5&t[0])throw t[1];return{value:t[0]?t[1]:void 0,done:!0}}([t,e])}}};Object.defineProperty(exports,"__esModule",{value:!0});var queue_method_collection_1=require("../collections/queue-method.collection");function loadCronJobMethods(o){o.methods({methodQueue:{function:function(){var n=this;return new Promise(function(t,e){return __awaiter(n,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return[4,queue_method_collection_1.QueueMethods.collection.countDocuments()];case 1:return e.sent()&&o.getMainServer().getQueueManager().runMethodQueue(),t(),[2]}})})})}}})}exports.loadCronJobMethods=loadCronJobMethods;
2
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZXRob2RzL2Nyb24tam9icy50cyJdLCJuYW1lcyI6WyJxdWV1ZV9tZXRob2RfY29sbGVjdGlvbl8xIiwicmVxdWlyZSIsImxvYWRDcm9uSm9iTWV0aG9kcyIsIm1ldGhvZE1hbmFnZXIiLCJtZXRob2RzIiwibWV0aG9kUXVldWUiLCJmdW5jdGlvbiIsIl90aGlzIiwidGhpcyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiX19hd2FpdGVyIiwiUXVldWVNZXRob2RzIiwiY29sbGVjdGlvbiIsImNvdW50RG9jdW1lbnRzIiwiX2EiLCJzZW50IiwiZ2V0TWFpblNlcnZlciIsImdldFF1ZXVlTWFuYWdlciIsInJ1bk1ldGhvZFF1ZXVlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6Im83Q0FBQSxJQUFBQSwwQkFBQUMsUUFBQSwwQ0FHQSxTQUFnQkMsbUJBQW1CQyxHQUNsQ0EsRUFBY0MsUUFBUSxDQUNyQkMsWUFBYSxDQUNaQyxTQUFVLFdBQUEsSUFBQUMsRUFBQUMsS0FDVCxPQUFPLElBQUlDLFFBQVEsU0FBT0MsRUFBU0MsR0FBTSxPQUFBQyxVQUFBTCxPQUFBLE9BQUEsRUFBQSxzRUFDeEIsTUFBQSxDQUFBLEVBQU1QLDBCQUFBYSxhQUFhQyxXQUFXQyxnQ0FBOUJDLEVBQUFDLFFBR2ZkLEVBQWNlLGdCQUFnQkMsa0JBQWtCQyxpQkFHakRWLG1CQVhMVyxRQUFBbkIsbUJBQUFBIiwiZmlsZSI6Im1ldGhvZHMvY3Jvbi1qb2JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUXVldWVNZXRob2RzIH0gZnJvbSAnLi4vY29sbGVjdGlvbnMvcXVldWUtbWV0aG9kLmNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgTWV0aG9kTWFuYWdlciB9IGZyb20gJy4uL21hbmFnZXJzL21ldGhvZC5tYW5hZ2VyJztcblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRDcm9uSm9iTWV0aG9kcyhtZXRob2RNYW5hZ2VyOiBNZXRob2RNYW5hZ2VyKSB7XG5cdG1ldGhvZE1hbmFnZXIubWV0aG9kcyh7XG5cdFx0bWV0aG9kUXVldWU6IHtcblx0XHRcdGZ1bmN0aW9uOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdFx0XHRsZXQgdXBkYXRlQ250ID0gYXdhaXQgUXVldWVNZXRob2RzLmNvbGxlY3Rpb24uY291bnREb2N1bWVudHMoKTtcblxuXHRcdFx0XHRcdGlmICh1cGRhdGVDbnQpIHtcblx0XHRcdFx0XHRcdG1ldGhvZE1hbmFnZXIuZ2V0TWFpblNlcnZlcigpLmdldFF1ZXVlTWFuYWdlcigpLnJ1bk1ldGhvZFF1ZXVlKCk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cmVzb2x2ZSgpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xufSAiXX0=
package/methods/flags.js CHANGED
@@ -1 +1,2 @@
1
- "use strict";function loadFlagMethods(e){e.methods({})}Object.defineProperty(exports,"__esModule",{value:!0}),exports.loadFlagMethods=loadFlagMethods;
1
+ "use strict";function loadFlagMethods(e){e.methods({})}Object.defineProperty(exports,"__esModule",{value:!0}),exports.loadFlagMethods=loadFlagMethods;
2
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZXRob2RzL2ZsYWdzLnRzIl0sIm5hbWVzIjpbImxvYWRGbGFnTWV0aG9kcyIsIm1ldGhvZE1hbmFnZXIiLCJtZXRob2RzIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6ImFBRUEsU0FBZ0JBLGdCQUFnQkMsR0FDL0JBLEVBQWNDLFFBQVEsMkRBRHZCQyxRQUFBSCxnQkFBQUEiLCJmaWxlIjoibWV0aG9kcy9mbGFncy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1ldGhvZE1hbmFnZXIgfSBmcm9tICcuLi9tYW5hZ2Vycy9tZXRob2QubWFuYWdlcic7XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkRmxhZ01ldGhvZHMobWV0aG9kTWFuYWdlcjogTWV0aG9kTWFuYWdlcikge1xuXHRtZXRob2RNYW5hZ2VyLm1ldGhvZHMoe1xuXHRcdFxuXHR9KTtcbn0iXX0=
package/methods/logs.js CHANGED
@@ -1 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var mongoose_1=require("mongoose"),log_collection_1=require("../collections/log.collection"),index_1=require("../index");function loadLogMethods(e){e.methods({insertErrorLog:{skipQueue:!0,function:function(e,o){return this.sendEmail("dev@resolveio.com","Error Detected - "+index_1.default.getClientName(),this.user+"\n"+e+"\n"+JSON.stringify(o,null,2)),log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),__v:0,date:new Date,type:"error",title:"Error - User: "+this.user,message:e,payload:o,method:"",user:this.user,messageId:""})},skipValidation:!0}})}exports.loadLogMethods=loadLogMethods;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var mongoose_1=require("mongoose"),log_collection_1=require("../collections/log.collection"),index_1=require("../index");function loadLogMethods(e){e.methods({insertErrorLog:{skipQueue:!0,function:function(e,o){return this.sendEmail("dev@resolveio.com","Error Detected - "+index_1.default.getClientName(),this.user+"\n"+e+"\n"+JSON.stringify(o,null,2)),log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),__v:0,date:new Date,type:"error",title:"Error - User: "+this.user,message:e,payload:o,method:"",user:this.user,messageId:""})},skipValidation:!0}})}exports.loadLogMethods=loadLogMethods;
2
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZXRob2RzL2xvZ3MudHMiXSwibmFtZXMiOlsibW9uZ29vc2VfMSIsInJlcXVpcmUiLCJsb2dfY29sbGVjdGlvbl8xIiwiaW5kZXhfMSIsImxvYWRMb2dNZXRob2RzIiwibWV0aG9kTWFuYWdlciIsIm1ldGhvZHMiLCJpbnNlcnRFcnJvckxvZyIsInNraXBRdWV1ZSIsImZ1bmN0aW9uIiwibWVzc2FnZSIsImRhdGEiLCJ0aGlzIiwic2VuZEVtYWlsIiwiZGVmYXVsdCIsImdldENsaWVudE5hbWUiLCJ1c2VyIiwiSlNPTiIsInN0cmluZ2lmeSIsIkxvZ3MiLCJjcmVhdGUiLCJfaWQiLCJUeXBlcyIsIk9iamVjdElkIiwidG9IZXhTdHJpbmciLCJfX3YiLCJkYXRlIiwiRGF0ZSIsInR5cGUiLCJ0aXRsZSIsInBheWxvYWQiLCJtZXRob2QiLCJtZXNzYWdlSWQiLCJza2lwVmFsaWRhdGlvbiIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJvRUFBQSxJQUFBQSxXQUFBQyxRQUFBLFlBRUFDLGlCQUFBRCxRQUFBLGlDQUNBRSxRQUFBRixRQUFBLFlBRUEsU0FBZ0JHLGVBQWVDLEdBQzlCQSxFQUFjQyxRQUFRLENBQ3JCQyxlQUFnQixDQUNmQyxXQUFXLEVBQ1hDLFNBQVUsU0FBU0MsRUFBU0MsR0FHM0IsT0FGQUMsS0FBS0MsVUFBVSxvQkFBcUIsb0JBQXNCVixRQUFBVyxRQUFnQkMsZ0JBQWlCSCxLQUFLSSxLQUFPLEtBQU9OLEVBQVUsS0FBT08sS0FBS0MsVUFBVVAsRUFBTSxLQUFNLElBRW5KVCxpQkFBQWlCLEtBQUtDLE9BQU8sQ0FDbEJDLElBQUtyQixXQUFBc0IsTUFBTUMsV0FBV0MsY0FDdEJDLElBQUssRUFDTEMsS0FBTSxJQUFJQyxLQUNWQyxLQUFNLFFBQ05DLE1BQU8saUJBQW1CakIsS0FBS0ksS0FDL0JOLFFBQVNBLEVBQ1RvQixRQUFTbkIsRUFDVG9CLE9BQVEsR0FDUmYsS0FBTUosS0FBS0ksS0FDWGdCLFVBQVcsTUFHYkMsZ0JBQWdCLEtBcEJuQkMsUUFBQTlCLGVBQUFBIiwiZmlsZSI6Im1ldGhvZHMvbG9ncy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGVzIH0gZnJvbSAnbW9uZ29vc2UnO1xuaW1wb3J0IHsgTWV0aG9kTWFuYWdlciB9IGZyb20gJy4uL21hbmFnZXJzL21ldGhvZC5tYW5hZ2VyJztcbmltcG9ydCB7IExvZ3MgfSBmcm9tICcuLi9jb2xsZWN0aW9ucy9sb2cuY29sbGVjdGlvbic7XG5pbXBvcnQgUmVzb2x2ZUlPU2VydmVyIGZyb20gJy4uL2luZGV4JztcblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRMb2dNZXRob2RzKG1ldGhvZE1hbmFnZXI6IE1ldGhvZE1hbmFnZXIpIHtcblx0bWV0aG9kTWFuYWdlci5tZXRob2RzKHtcblx0XHRpbnNlcnRFcnJvckxvZzoge1xuXHRcdFx0c2tpcFF1ZXVlOiB0cnVlLFxuXHRcdFx0ZnVuY3Rpb246IGZ1bmN0aW9uKG1lc3NhZ2UsIGRhdGEpIHtcblx0XHRcdFx0dGhpcy5zZW5kRW1haWwoJ2RldkByZXNvbHZlaW8uY29tJywgJ0Vycm9yIERldGVjdGVkIC0gJyArIFJlc29sdmVJT1NlcnZlci5nZXRDbGllbnROYW1lKCksIHRoaXMudXNlciArICdcXG4nICsgbWVzc2FnZSArICdcXG4nICsgSlNPTi5zdHJpbmdpZnkoZGF0YSwgbnVsbCwgMikpO1xuXG5cdFx0XHRcdHJldHVybiBMb2dzLmNyZWF0ZSh7XG5cdFx0XHRcdFx0X2lkOiBUeXBlcy5PYmplY3RJZCgpLnRvSGV4U3RyaW5nKCksXG5cdFx0XHRcdFx0X192OiAwLFxuXHRcdFx0XHRcdGRhdGU6IG5ldyBEYXRlKCksXG5cdFx0XHRcdFx0dHlwZTogJ2Vycm9yJyxcblx0XHRcdFx0XHR0aXRsZTogJ0Vycm9yIC0gVXNlcjogJyArIHRoaXMudXNlcixcblx0XHRcdFx0XHRtZXNzYWdlOiBtZXNzYWdlLFxuXHRcdFx0XHRcdHBheWxvYWQ6IGRhdGEsXG5cdFx0XHRcdFx0bWV0aG9kOiAnJyxcblx0XHRcdFx0XHR1c2VyOiB0aGlzLnVzZXIsXG5cdFx0XHRcdFx0bWVzc2FnZUlkOiAnJ1xuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHRza2lwVmFsaWRhdGlvbjogdHJ1ZVxuXHRcdH1cblx0fSk7XG59Il19
package/methods/pdf.js CHANGED
@@ -1 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var fs=require("fs"),request=require("request"),mongoose_1=require("mongoose"),simpl_schema_1=require("simpl-schema"),pdfCnt=0;function loadPDFMethods(t){t.methods({generatePDF:{skipQueue:!0,check:new simpl_schema_1.default({html:{type:String},fileName:{type:String},orientation:{type:String,optional:!0},fontSize:{type:String,optional:!0},upload:{type:Boolean,optional:!0},uploadFileOrder:{type:Number,optional:!0},uploadFileType:{type:String,optional:!0}}),function:function(e,s,n,l,f,p,c){void 0===n&&(n="portrait"),void 0===l&&(l="8px"),void 0===f&&(f=!1),void 0===p&&(p=-1),void 0===c&&(c="");var u=this;return new Promise(function(i,o){var t=require("phantom"),a=null;t.create().then(function(t){return(a=t).createPage()}).then(function(t){t.property("paperSize",{format:"letter",margin:"1cm",orientation:n,footer:{height:"1cm",contents:a.callback(function(t,e){return"<span style='float:right; font-size: 12px;'>Page "+t+" of "+e+"</span>"})}}),t.property("content","\n\t\t\t\t\t\t<head>\n\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif.ttf\");\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif-Bold.ttf\");\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif-Italic.ttf\");\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif-BoldItalic.ttf\");\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbody {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\tfont-size: "+(l||"8px")+";\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.row {\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\t\tflex-wrap: wrap;\n\t\t\t\t\t\t\t\t\t-webkit-flex-wrap: wrap;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t.page-break {\n\t\t\t\t\t\t\t\t\tpage-break-before: always !important;\n\t\t\t\t\t\t\t\t\tmargin-bottom: 1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.cell {\n\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\tpadding : 2px;\n\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.cell-no-padding {\n\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered {\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: center;\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered-left {\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-start;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered-right {\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-end;\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t.box {\n\t\t\t\t\t\t\t\t\tborder: 1px solid black;\n\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.boxNoBorder {\n\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tpre {\n\t\t\t\t\t\t\t\t\twhite-space: pre-wrap; /* css-3 */\n\t\t\t\t\t\t\t\t\twhite-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n\t\t\t\t\t\t\t\t\twhite-space: -pre-wrap; /* Opera 4-6 */\n\t\t\t\t\t\t\t\t\twhite-space: -o-pre-wrap; /* Opera 7 */\n\t\t\t\t\t\t\t\t\tword-wrap: break-word; /* Internet Explorer 5.5+ */\n\t\t\t\t\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\t\t\t\t\tfont-family: Open Sans; \n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t</head>\n\t\t\t\t\t\t<body>\n\t\t\t\t\t"+e.replace(new RegExp("flex-basis:","g"),"-webkit-flex-basis:").replace(new RegExp("flex:","g"),"-webkit-flex:")+"</body>");var r=pdfCnt+++"-"+s;t.render(r,{format:"pdf",quality:"100"}).then(function(){fs.existsSync(r)?fs.readFile(r,function(t,e){if(t)console.log(t);else if(fs.unlinkSync(r),f){var n="data:application/pdf;base64,"+Buffer.from(e).toString("base64");u.callMethodInternal.call(u,"uploadFileAndSave",s,n,4*Math.ceil(n.length/3),p,c,function(t,e){t?o(t):i(e)})}else i("data:application/pdf;base64,"+Buffer.from(e).toString("base64"));a.exit()}):(o("No tmp file"),console.log("No tmp file ",r))})}).catch(function(t){o(t),a.exit()})})}},mergePDF:{skipQueue:!0,check:new simpl_schema_1.default({fileKeys:{type:Array},"fileKeys.$":{type:String},fileName:{type:String},fileType:{type:String,optional:!0}}),function:function(e,s,l){var f=this;return new Promise(function(o,a){f.callMethodInternal.call(f,"getCCProcessURL").then(function(t){var i="uploads/"+Date.now()+"-"+pdfCnt+++"-"+s;request({method:"POST",url:"https:"+t.url,headers:{"Content-Type":"application/json"},json:{mode:"combine",input:{s3:{accesskeyid:f.serverConfig.AWSACCESSKEYID,secretaccesskey:f.serverConfig.AWSSECRETACCESSKEY,region:f.serverConfig.AWSREGION,bucket:f.serverConfig.AWSBUCKET}},files:e,outputformat:"pdf",wait:!0,output:{s3:{accesskeyid:f.serverConfig.AWSACCESSKEYID,secretaccesskey:f.serverConfig.AWSSECRETACCESSKEY,region:f.serverConfig.AWSREGION,bucket:f.serverConfig.AWSBUCKET,path:i}},converteroptions:{resize:"612x792",resizemode:"scale",resizeenlarge:null,grayscale:null,auto_orient:null,strip_metatags:!1,density:72,rotate:null,command:null}}},function(t,e,n){if(t)a(t);else{var r={_id:mongoose_1.Types.ObjectId().toHexString(),__v:0,name:s,size:n.output.size,key:i,type:l||"",order:-1};n.output.size?f.callMethodInternal.call(f,"insertDocument","files",r,function(t,e){e?(r.status="Uploaded",o(r)):a(t)}):a("Merged file has no size, merge failed")}})},function(t){return a(t)})})}},mergePDFNoUpload:{skipQueue:!0,check:new simpl_schema_1.default({fileKeys:{type:Array},"fileKeys.$":{type:String},fileName:{type:String},fileType:{type:String,optional:!0}}),function:function(e,s,l){var f=this;return new Promise(function(o,a){f.callMethodInternal.call(f,"getCCProcessURL").then(function(t){var i="uploads/"+Date.now()+"-"+pdfCnt+++"-"+s;request({method:"POST",url:"https:"+t.url,headers:{"Content-Type":"application/json"},json:{mode:"combine",input:{s3:{accesskeyid:f.serverConfig.AWSACCESSKEYID,secretaccesskey:f.serverConfig.AWSSECRETACCESSKEY,region:f.serverConfig.AWSREGION,bucket:f.serverConfig.AWSBUCKET}},files:e,outputformat:"pdf",wait:!0,output:{s3:{accesskeyid:f.serverConfig.AWSACCESSKEYID,secretaccesskey:f.serverConfig.AWSSECRETACCESSKEY,region:f.serverConfig.AWSREGION,bucket:f.serverConfig.AWSBUCKET,path:i}},converteroptions:{resize:"612x792",resizemode:"scale",resizeenlarge:null,grayscale:null,auto_orient:null,strip_metatags:!1,density:72,rotate:null,command:null}}},function(t,e,n){if(t)a(t);else{var r={_id:mongoose_1.Types.ObjectId().toHexString(),name:s,size:n.output.size,key:i,type:l||"",order:-1};f.callMethodInternal.call(f,"insertDocument","files",r,function(t,e){if(e){r.status="Uploaded",o(r);var n=f;setTimeout(function(){n.callMethodInternal.call(n,"deleteFile",i)},6e4)}else a(t)})}})},function(t){return a(t)})})}}})}exports.loadPDFMethods=loadPDFMethods;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var fs=require("fs"),request=require("request"),mongoose_1=require("mongoose"),simpl_schema_1=require("simpl-schema"),pdfCnt=0;function loadPDFMethods(t){t.methods({generatePDF:{skipQueue:!0,check:new simpl_schema_1.default({html:{type:String},fileName:{type:String},orientation:{type:String,optional:!0},fontSize:{type:String,optional:!0},upload:{type:Boolean,optional:!0},uploadFileOrder:{type:Number,optional:!0},uploadFileType:{type:String,optional:!0}}),function:function(e,s,n,l,f,p,c){void 0===n&&(n="portrait"),void 0===l&&(l="8px"),void 0===f&&(f=!1),void 0===p&&(p=-1),void 0===c&&(c="");var u=this;return new Promise(function(i,o){var t=require("phantom"),a=null;t.create().then(function(t){return(a=t).createPage()}).then(function(t){t.property("paperSize",{format:"letter",margin:"1cm",orientation:n,footer:{height:"1cm",contents:a.callback(function(t,e){return"<span style='float:right; font-size: 12px;'>Page "+t+" of "+e+"</span>"})}}),t.property("content","\n\t\t\t\t\t\t<head>\n\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif.ttf\");\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif-Bold.ttf\");\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif-Italic.ttf\");\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif-BoldItalic.ttf\");\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbody {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\tfont-size: "+(l||"8px")+";\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.row {\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\t\tflex-wrap: wrap;\n\t\t\t\t\t\t\t\t\t-webkit-flex-wrap: wrap;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t.page-break {\n\t\t\t\t\t\t\t\t\tpage-break-before: always !important;\n\t\t\t\t\t\t\t\t\tmargin-bottom: 1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.cell {\n\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\tpadding : 2px;\n\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.cell-no-padding {\n\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered {\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: center;\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered-left {\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-start;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered-right {\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-end;\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t.box {\n\t\t\t\t\t\t\t\t\tborder: 1px solid black;\n\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.boxNoBorder {\n\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tpre {\n\t\t\t\t\t\t\t\t\twhite-space: pre-wrap; /* css-3 */\n\t\t\t\t\t\t\t\t\twhite-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n\t\t\t\t\t\t\t\t\twhite-space: -pre-wrap; /* Opera 4-6 */\n\t\t\t\t\t\t\t\t\twhite-space: -o-pre-wrap; /* Opera 7 */\n\t\t\t\t\t\t\t\t\tword-wrap: break-word; /* Internet Explorer 5.5+ */\n\t\t\t\t\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\t\t\t\t\tfont-family: Open Sans; \n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t</head>\n\t\t\t\t\t\t<body>\n\t\t\t\t\t"+e.replace(new RegExp("flex-basis:","g"),"-webkit-flex-basis:").replace(new RegExp("flex:","g"),"-webkit-flex:")+"</body>");var r=pdfCnt+++"-"+s;t.render(r,{format:"pdf",quality:"100"}).then(function(){fs.existsSync(r)?fs.readFile(r,function(t,e){if(t)console.log(t);else if(fs.unlinkSync(r),f){var n="data:application/pdf;base64,"+Buffer.from(e).toString("base64");u.callMethodInternal.call(u,"uploadFileAndSave",s,n,4*Math.ceil(n.length/3),p,c,function(t,e){t?o(t):i(e)})}else i("data:application/pdf;base64,"+Buffer.from(e).toString("base64"));a.exit()}):(o("No tmp file"),console.log("No tmp file ",r))})}).catch(function(t){o(t),a.exit()})})}},mergePDF:{skipQueue:!0,check:new simpl_schema_1.default({fileKeys:{type:Array},"fileKeys.$":{type:String},fileName:{type:String},fileType:{type:String,optional:!0}}),function:function(e,s,l){var f=this;return new Promise(function(o,a){f.callMethodInternal.call(f,"getCCProcessURL").then(function(t){var i="uploads/"+Date.now()+"-"+pdfCnt+++"-"+s;request({method:"POST",url:"https:"+t.url,headers:{"Content-Type":"application/json"},json:{mode:"combine",input:{s3:{accesskeyid:f.serverConfig.AWSACCESSKEYID,secretaccesskey:f.serverConfig.AWSSECRETACCESSKEY,region:f.serverConfig.AWSREGION,bucket:f.serverConfig.AWSBUCKET}},files:e,outputformat:"pdf",wait:!0,output:{s3:{accesskeyid:f.serverConfig.AWSACCESSKEYID,secretaccesskey:f.serverConfig.AWSSECRETACCESSKEY,region:f.serverConfig.AWSREGION,bucket:f.serverConfig.AWSBUCKET,path:i}},converteroptions:{resize:"612x792",resizemode:"scale",resizeenlarge:null,grayscale:null,auto_orient:null,strip_metatags:!1,density:72,rotate:null,command:null}}},function(t,e,n){if(t)a(t);else{var r={_id:mongoose_1.Types.ObjectId().toHexString(),__v:0,name:s,size:n.output.size,key:i,type:l||"",order:-1};n.output.size?f.callMethodInternal.call(f,"insertDocument","files",r,function(t,e){e?(r.status="Uploaded",o(r)):a(t)}):a("Merged file has no size, merge failed")}})},function(t){return a(t)})})}},mergePDFNoUpload:{skipQueue:!0,check:new simpl_schema_1.default({fileKeys:{type:Array},"fileKeys.$":{type:String},fileName:{type:String},fileType:{type:String,optional:!0}}),function:function(e,s,l){var f=this;return new Promise(function(o,a){f.callMethodInternal.call(f,"getCCProcessURL").then(function(t){var i="uploads/"+Date.now()+"-"+pdfCnt+++"-"+s;request({method:"POST",url:"https:"+t.url,headers:{"Content-Type":"application/json"},json:{mode:"combine",input:{s3:{accesskeyid:f.serverConfig.AWSACCESSKEYID,secretaccesskey:f.serverConfig.AWSSECRETACCESSKEY,region:f.serverConfig.AWSREGION,bucket:f.serverConfig.AWSBUCKET}},files:e,outputformat:"pdf",wait:!0,output:{s3:{accesskeyid:f.serverConfig.AWSACCESSKEYID,secretaccesskey:f.serverConfig.AWSSECRETACCESSKEY,region:f.serverConfig.AWSREGION,bucket:f.serverConfig.AWSBUCKET,path:i}},converteroptions:{resize:"612x792",resizemode:"scale",resizeenlarge:null,grayscale:null,auto_orient:null,strip_metatags:!1,density:72,rotate:null,command:null}}},function(t,e,n){if(t)a(t);else{var r={_id:mongoose_1.Types.ObjectId().toHexString(),name:s,size:n.output.size,key:i,type:l||"",order:-1};f.callMethodInternal.call(f,"insertDocument","files",r,function(t,e){if(e){r.status="Uploaded",o(r);var n=f;setTimeout(function(){n.callMethodInternal.call(n,"deleteFile",i)},6e4)}else a(t)})}})},function(t){return a(t)})})}}})}exports.loadPDFMethods=loadPDFMethods;
2
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZXRob2RzL3BkZi50cyJdLCJuYW1lcyI6WyJmcyIsInJlcXVpcmUiLCJyZXF1ZXN0IiwibW9uZ29vc2VfMSIsInNpbXBsX3NjaGVtYV8xIiwicGRmQ250IiwibG9hZFBERk1ldGhvZHMiLCJtZXRob2RNYW5hZ2VyIiwibWV0aG9kcyIsImdlbmVyYXRlUERGIiwic2tpcFF1ZXVlIiwiY2hlY2siLCJkZWZhdWx0IiwiaHRtbCIsInR5cGUiLCJTdHJpbmciLCJmaWxlTmFtZSIsIm9yaWVudGF0aW9uIiwib3B0aW9uYWwiLCJmb250U2l6ZSIsInVwbG9hZCIsIkJvb2xlYW4iLCJ1cGxvYWRGaWxlT3JkZXIiLCJOdW1iZXIiLCJ1cGxvYWRGaWxlVHlwZSIsImZ1bmN0aW9uIiwidGhhdCIsInRoaXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInBoYW50b20iLCJwaEluc3RhbmNlIiwiY3JlYXRlIiwidGhlbiIsImluc3RhbmNlIiwiY3JlYXRlUGFnZSIsInBhZ2UiLCJwcm9wZXJ0eSIsImZvcm1hdCIsIm1hcmdpbiIsImZvb3RlciIsImhlaWdodCIsImNvbnRlbnRzIiwiY2FsbGJhY2siLCJwYWdlTnVtIiwibnVtUGFnZXMiLCJyZXBsYWNlIiwiUmVnRXhwIiwidG1wRmlsZU5hbWUiLCJyZW5kZXIiLCJxdWFsaXR5IiwiZXhpc3RzU3luYyIsInJlYWRGaWxlIiwiZXJyUmVhZCIsImRhdGEiLCJjb25zb2xlIiwibG9nIiwidW5saW5rU3luYyIsImZpbGVEYXRhIiwiQnVmZmVyIiwiZnJvbSIsInRvU3RyaW5nIiwiY2FsbE1ldGhvZEludGVybmFsIiwiY2FsbCIsIk1hdGgiLCJjZWlsIiwibGVuZ3RoIiwiZXJyIiwicmVzIiwiZXhpdCIsImNhdGNoIiwiZXJyb3IiLCJtZXJnZVBERiIsImZpbGVLZXlzIiwiQXJyYXkiLCJmaWxlS2V5cy4kIiwiZmlsZVR5cGUiLCJfdGhpcyIsInJlc0NDIiwibWVyZ2VGaWxlTmFtZSIsIkRhdGUiLCJub3ciLCJtZXRob2QiLCJ1cmwiLCJoZWFkZXJzIiwiQ29udGVudC1UeXBlIiwianNvbiIsIm1vZGUiLCJpbnB1dCIsInMzIiwiYWNjZXNza2V5aWQiLCJzZXJ2ZXJDb25maWciLCJzZWNyZXRhY2Nlc3NrZXkiLCJyZWdpb24iLCJidWNrZXQiLCJmaWxlcyIsIm91dHB1dGZvcm1hdCIsIndhaXQiLCJvdXRwdXQiLCJwYXRoIiwiY29udmVydGVyb3B0aW9ucyIsInJlc2l6ZSIsInJlc2l6ZW1vZGUiLCJyZXNpemVlbmxhcmdlIiwiZ3JheXNjYWxlIiwiYXV0b19vcmllbnQiLCJzdHJpcF9tZXRhdGFncyIsImRlbnNpdHkiLCJyb3RhdGUiLCJjb21tYW5kIiwicmVzcG9uc2UiLCJib2R5IiwicmVzRmlsZV8xIiwiX2lkIiwiVHlwZXMiLCJPYmplY3RJZCIsInRvSGV4U3RyaW5nIiwiX192IiwibmFtZSIsInNpemUiLCJrZXkiLCJvcmRlciIsImVyclVwRmlsZSIsInJlc1VwRmlsZSIsInN0YXR1cyIsImVyckNDIiwibWVyZ2VQREZOb1VwbG9hZCIsInJlc0ZpbGVfMiIsInRoYXRfMSIsInNldFRpbWVvdXQiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoib0VBQUEsSUFBSUEsR0FBS0MsUUFBUSxNQUdqQkMsUUFBQUQsUUFBQSxXQUNBRSxXQUFBRixRQUFBLFlBQ0FHLGVBQUFILFFBQUEsZ0JBRUlJLE9BQVMsRUFFYixTQUFnQkMsZUFBZUMsR0FDOUJBLEVBQWNDLFFBQVEsQ0FDckJDLFlBQWEsQ0FDWkMsV0FBVyxFQUNYQyxNQUFPLElBQUlQLGVBQUFRLFFBQWEsQ0FDdkJDLEtBQU0sQ0FDTEMsS0FBTUMsUUFFUEMsU0FBVSxDQUNURixLQUFNQyxRQUVQRSxZQUFhLENBQ1pILEtBQU1DLE9BQ05HLFVBQVUsR0FFWEMsU0FBVSxDQUNUTCxLQUFNQyxPQUNORyxVQUFVLEdBRVhFLE9BQVEsQ0FDUE4sS0FBTU8sUUFDTkgsVUFBVSxHQUVYSSxnQkFBaUIsQ0FDaEJSLEtBQU1TLE9BQ05MLFVBQVUsR0FFWE0sZUFB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SUEsRUFBVyxDQUNkSSxFQUFRSCxPQUFTLFdBRWpCaEcsRUFBUW1HLEdBRVIsSUFBSUMsRUFBT25ELEVBRVhvRCxXQUFXLFdBQ1ZELEVBQUtsRSxtQkFBbUJDLEtBQUtpRSxFQUFNLGFBQWNqRCxJQUMvQyxVQUdIbEQsRUFBTzZGLFNBUVQsU0FBQUcsR0FBUyxPQUFBaEcsRUFBT2dHLFdBL1l4QkssUUFBQTdILGVBQUFBIiwiZmlsZSI6Im1ldGhvZHMvcGRmLmpzIiwic291cmNlc0NvbnRlbnQiOlsibGV0IGZzID0gcmVxdWlyZSgnZnMnKTtcbmltcG9ydCB7IEZpbGVNb2RlbCB9IGZyb20gJy4uL21vZGVscy9maWxlLm1vZGVsJztcbmltcG9ydCB7IE1ldGhvZE1hbmFnZXIgfSBmcm9tICcuLi9tYW5hZ2Vycy9tZXRob2QubWFuYWdlcic7XG5pbXBvcnQgKiBhcyByZXF1ZXN0IGZyb20gJ3JlcXVlc3QnO1xuaW1wb3J0IHsgVHlwZXMgfSBmcm9tICdtb25nb29zZSc7XG5pbXBvcnQgU2ltcGxlU2NoZW1hIGZyb20gJ3NpbXBsLXNjaGVtYSc7XG5cbmxldCBwZGZDbnQgPSAwO1xuXG5leHBvcnQgZnVuY3Rpb24gbG9hZFBERk1ldGhvZHMobWV0aG9kTWFuYWdlcjogTWV0aG9kTWFuYWdlcikge1xuXHRtZXRob2RNYW5hZ2VyLm1ldGhvZHMoe1xuXHRcdGdlbmVyYXRlUERGOiB7XG5cdFx0XHRza2lwUXVldWU6IHRydWUsXG5cdFx0XHRjaGVjazogbmV3IFNpbXBsZVNjaGVtYSh7XG5cdFx0XHRcdGh0bWw6IHtcblx0XHRcdFx0XHR0eXBlOiBTdHJpbmdcblx0XHRcdFx0fSxcblx0XHRcdFx0ZmlsZU5hbWU6IHtcblx0XHRcdFx0XHR0eXBlOiBTdHJpbmdcblx0XHRcdFx0fSxcblx0XHRcdFx0b3JpZW50YXRpb246IHtcblx0XHRcdFx0XHR0eXBlOiBTdHJpbmcsXG5cdFx0XHRcdFx0b3B0aW9uYWw6IHRydWVcblx0XHRcdFx0fSxcblx0XHRcdFx0Zm9udFNpemU6IHtcblx0XHRcdFx0XHR0eXBlOiBTdHJpbmcsXG5cdFx0XHRcdFx0b3B0aW9uYWw6IHRydWVcblx0XHRcdFx0fSxcblx0XHRcdFx0dXBsb2FkOiB7XG5cdFx0XHRcdFx0dHlwZTogQm9vbGVhbixcblx0XHRcdFx0XHRvcHRpb25hbDogdHJ1ZVxuXHRcdFx0XHR9LFxuXHRcdFx0XHR1cGxvYWRGaWxlT3JkZXI6IHtcblx0XHRcdFx0XHR0eXBlOiBOdW1iZXIsXG5cdFx0XHRcdFx0b3B0aW9uYWw6IHRydWVcblx0XHRcdFx0fSxcblx0XHRcdFx0dXBsb2FkRmlsZVR5cGU6IHtcblx0XHRcdFx0XHR0eXBlOiBTdHJpbmcsXG5cdFx0XHRcdFx0b3B0aW9uYWw6IHRydWVcblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHRmdW5jdGlvbjogZnVuY3Rpb24oaHRtbCwgZmlsZU5hbWUsIG9yaWVudGF0aW9uID0gJ3BvcnRyYWl0JywgZm9udFNpemUgPSAnOHB4JywgdXBsb2FkID0gZmFsc2UsIHVwbG9hZEZpbGVPcmRlciA9IC0xLCB1cGxvYWRGaWxlVHlwZSA9ICcnKSB7XG5cdFx0XHRcdGxldCB0aGF0ID0gdGhpcztcblxuXHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0XHRcdGxldCBwaGFudG9tID0gcmVxdWlyZSgncGhhbnRvbScpO1xuXHRcdFx0XHRcdGxldCBwaEluc3RhbmNlID0gbnVsbDtcblx0XHRcdFx0XHRcblx0XHRcdFx0XHRwaGFudG9tLmNyZWF0ZSgpLnRoZW4oaW5zdGFuY2UgPT4ge1xuXHRcdFx0XHRcdFx0cGhJbnN0YW5jZSA9IGluc3RhbmNlO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGluc3RhbmNlLmNyZWF0ZVBhZ2UoKTtcblx0XHRcdFx0XHR9KS50aGVuKHBhZ2UgPT4ge1xuXHRcdFx0XHRcdFx0cGFnZS5wcm9wZXJ0eSgncGFwZXJTaXplJywge1xuXHRcdFx0XHRcdFx0XHRmb3JtYXQ6ICdsZXR0ZXInLFxuXHRcdFx0XHRcdFx0XHRtYXJnaW46ICcxY20nLFxuXHRcdFx0XHRcdFx0XHRvcmllbnRhdGlvbjogb3JpZW50YXRpb24sXG5cdFx0XHRcdFx0XHRcdGZvb3Rlcjoge1xuXHRcdFx0XHRcdFx0XHRcdGhlaWdodDogJzFjbScsXG5cdFx0XHRcdFx0XHRcdFx0Y29udGVudHM6IHBoSW5zdGFuY2UuY2FsbGJhY2soZnVuY3Rpb24ocGFnZU51bSwgbnVtUGFnZXMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAnPHNwYW4gc3R5bGU9XFwnZmxvYXQ6cmlnaHQ7IGZvbnQtc2l6ZTogMTJweDtcXCc+UGFnZSAnICsgcGFnZU51bSArICcgb2YgJyArIG51bVBhZ2VzICsgJzwvc3Bhbj4nO1xuXHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0cGFnZS5wcm9wZXJ0eSgnY29udGVudCcsIGBcblx0XHRcdFx0XHRcdDxoZWFkPlxuXHRcdFx0XHRcdFx0XHQ8c3R5bGU+XG5cdFx0XHRcdFx0XHRcdFx0QGZvbnQtZmFjZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRmb250LWZhbWlseTogJ0RlamF2dSBTZXJpZicsIHNlcmlmO1xuXHRcdFx0XHRcdFx0XHRcdFx0Zm9udC1zdHlsZTogbm9ybWFsO1xuXHRcdFx0XHRcdFx0XHRcdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblx0XHRcdFx0XHRcdFx0XHRcdHNyYzogdXJsKFwiL3Vzci9zaGFyZS9mb250cy9kZWphdnUvRGVqYVZ1U2VyaWYudHRmXCIpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdEBmb250LWZhY2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0Zm9udC1mYW1pbHk6ICdEZWphdnUgU2VyaWYnLCBzZXJpZjtcblx0XHRcdFx0XHRcdFx0XHRcdGZvbnQtc3R5bGU6IG5vcm1hbDtcblx0XHRcdFx0XHRcdFx0XHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xuXHRcdFx0XHRcdFx0XHRcdFx0c3JjOiB1cmwoXCIvdXNyL3NoYXJlL2ZvbnRzL2RlamF2dS9EZWphVnVTZXJpZi1Cb2xkLnR0ZlwiKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRAZm9udC1mYWNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdGZvbnQtZmFtaWx5OiAnRGVqYXZ1IFNlcmlmJywgc2VyaWY7XG5cdFx0XHRcdFx0XHRcdFx0XHRmb250LXN0eWxlOiBpdGFsaWM7XG5cdFx0XHRcdFx0XHRcdFx0XHRmb250LXdlaWdodDogbm9ybWFsO1xuXHRcdFx0XHRcdFx0XHRcdFx0c3JjOiB1cmwoXCIvdXNyL3NoYXJlL2ZvbnRzL2RlamF2dS9EZWphVnVTZXJpZi1JdGFsaWMudHRmXCIpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdEBmb250LWZhY2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0Zm9udC1mYW1pbHk6ICdEZWphdnUgU2VyaWYnLCBzZXJpZjtcblx0XHRcdFx0XHRcdFx0XHRcdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0XHRcdFx0XHRcdFx0XHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xuXHRcdFx0XHRcdFx0XHRcdFx0c3JjOiB1cmwoXCIvdXNyL3NoYXJlL2ZvbnRzL2RlamF2dS9EZWphVnVTZXJpZi1Cb2xkSXRhbGljLnR0ZlwiKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRib2R5IHtcblx0XHRcdFx0XHRcdFx0XHRcdGZvbnQtZmFtaWx5OiAnRGVqYXZ1IFNlcmlmJywgc2VyaWY7XG5cdFx0XHRcdFx0XHRcdFx0XHRmb250LXNpemU6ICBgICsgKGZvbnRTaXplID8gZm9udFNpemUgOiAnOHB4JykgKyBgO1xuXHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdC5yb3cge1xuXHRcdFx0XHRcdFx0XHRcdFx0ZGlzcGxheTogLXdlYmtpdC1mbGV4O1xuXHRcdFx0XHRcdFx0XHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdFx0XHRcdFx0XHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRcdFx0XHRcdFx0XHRcdC13ZWJraXQtZmxleC13cmFwOiB3cmFwO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHRcdC5wYWdlLWJyZWFrIHtcblx0XHRcdFx0XHRcdFx0XHRcdHBhZ2UtYnJlYWstYmVmb3JlOiBhbHdheXMgIWltcG9ydGFudDtcblx0XHRcdFx0XHRcdFx0XHRcdG1hcmdpbi1ib3R0b206IDFweDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHQuY2VsbCB7XG5cdFx0XHRcdFx0XHRcdFx0XHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRcdFx0XHRcdFx0XHRcdFx0cGFkZGluZyA6IDJweDtcblx0XHRcdFx0XHRcdFx0XHRcdC13ZWJraXQtZmxleDogMTtcblx0XHRcdFx0XHRcdFx0XHRcdHdvcmQtd3JhcDogYnJlYWstd29yZDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHQuY2VsbC1uby1wYWRkaW5nIHtcblx0XHRcdFx0XHRcdFx0XHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0XHRcdFx0XHRcdFx0XHQtd2Via2l0LWZsZXg6IDE7XG5cdFx0XHRcdFx0XHRcdFx0XHR3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0LmNlbnRlcmVkIHtcblx0XHRcdFx0XHRcdFx0XHRcdC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHRcdFx0XHRcdFx0XHQtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRcdFx0XHRcdFx0XHRkaXNwbGF5OiAtd2Via2l0LWZsZXg7XG5cdFx0XHRcdFx0XHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0LmNlbnRlcmVkLWxlZnQge1xuXHRcdFx0XHRcdFx0XHRcdFx0LXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0XHRcdFx0XHRcdFx0ZGlzcGxheTogLXdlYmtpdC1mbGV4O1xuXHRcdFx0XHRcdFx0XHRcdFx0LXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0LmNlbnRlcmVkLXJpZ2h0IHtcblx0XHRcdFx0XHRcdFx0XHRcdC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcblx0XHRcdFx0XHRcdFx0XHRcdC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdFx0XHRcdFx0XHRcdGRpc3BsYXk6IC13ZWJraXQtZmxleDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0LmJveCB7XG5cdFx0XHRcdFx0XHRcdFx0XHRib3JkZXI6IDFweCBzb2xpZCBibGFjaztcblx0XHRcdFx0XHRcdFx0XHRcdG1hcmdpbjogLTFweCAwcHggMHB4IC0xcHg7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0LmJveE5vQm9yZGVyIHtcblx0XHRcdFx0XHRcdFx0XHRcdG1hcmdpbjogLTFweCAwcHggMHB4IC0xcHg7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0cHJlIHtcblx0XHRcdFx0XHRcdFx0XHRcdHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgICAgICAgLyogY3NzLTMgKi9cblx0XHRcdFx0XHRcdFx0XHRcdHdoaXRlLXNwYWNlOiAtbW96LXByZS13cmFwOyAgLyogTW96aWxsYSwgc2luY2UgMTk5OSAqL1xuXHRcdFx0XHRcdFx0XHRcdFx0d2hpdGUtc3BhY2U6IC1wcmUtd3JhcDsgICAgICAvKiBPcGVyYSA0LTYgKi9cblx0XHRcdFx0XHRcdFx0XHRcdHdoaXRlLXNwYWNlOiAtby1wcmUtd3JhcDsgICAgLyogT3BlcmEgNyAqL1xuXHRcdFx0XHRcdFx0XHRcdFx0d29yZC13cmFwOiBicmVhay13b3JkOyAgICAgICAvKiBJbnRlcm5ldCBFeHBsb3JlciA1LjUrICovXG5cdFx0XHRcdFx0XHRcdFx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0XHRcdFx0XHRcdFx0XHRmb250LWZhbWlseTogT3BlbiBTYW5zOyBcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdDwvc3R5bGU+XG5cdFx0XHRcdFx0XHQ8L2hlYWQ+XG5cdFx0XHRcdFx0XHQ8Ym9keT5cblx0XHRcdFx0XHRgICsgaHRtbC5yZXBsYWNlKG5ldyBSZWdFeHAoJ2ZsZXgtYmFzaXM6JywgJ2cnKSwgJy13ZWJraXQtZmxleC1iYXNpczonKS5yZXBsYWNlKG5ldyBSZWdFeHAoJ2ZsZXg6JywgJ2cnKSwgJy13ZWJraXQtZmxleDonKSArICc8L2JvZHk+Jyk7XG5cdFx0XHRcdFx0XHRsZXQgdG1wRmlsZU5hbWUgPSAocGRmQ250KyspICsgJy0nICsgZmlsZU5hbWU7XG5cdFx0XHRcdFx0XHRwYWdlLnJlbmRlcih0bXBGaWxlTmFtZSwge1xuXHRcdFx0XHRcdFx0XHRmb3JtYXQ6ICdwZGYnLFxuXHRcdFx0XHRcdFx0XHRxdWFsaXR5OiAnMTAwJ1xuXHRcdFx0XHRcdFx0fSkudGhlbigoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGlmIChmcy5leGlzdHNTeW5jKHRtcEZpbGVOYW1lKSkge1xuXHRcdFx0XHRcdFx0XHRcdGZzLnJlYWRGaWxlKHRtcEZpbGVOYW1lLCAoZXJyUmVhZCwgZGF0YSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFlcnJSZWFkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZzLnVubGlua1N5bmModG1wRmlsZU5hbWUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXVwbG9hZCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUoJ2RhdGE6YXBwbGljYXRpb24vcGRmO2Jhc2U2NCwnICsgQnVmZmVyLmZyb20oZGF0YSkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRsZXQgZmlsZURhdGEgPSAnZGF0YTphcHBsaWNhdGlvbi9wZGY7YmFzZTY0LCcgKyBCdWZmZXIuZnJvbShkYXRhKS50b1N0cmluZygnYmFzZTY0Jyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhhdC5jYWxsTWV0aG9kSW50ZXJuYWwuY2FsbCh0aGF0LCAndXBsb2FkRmlsZUFuZFNhdmUnLCBmaWxlTmFtZSwgZmlsZURhdGEsICg0ICogTWF0aC5jZWlsKGZpbGVEYXRhLmxlbmd0aCAvIDMpKSwgdXBsb2FkRmlsZU9yZGVyLCB1cGxvYWRGaWxlVHlwZSwgKGVyciwgcmVzKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoZXJyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUocmVzKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGVyclJlYWQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0XHRwaEluc3RhbmNlLmV4aXQoKTtcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRyZWplY3QoJ05vIHRtcCBmaWxlJyk7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ05vIHRtcCBmaWxlICcsIHRtcEZpbGVOYW1lKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQuY2F0Y2goZXJyb3IgPT4ge1xuXHRcdFx0XHRcdFx0cmVqZWN0KGVycm9yKTtcblx0XHRcdFx0XHRcdHBoSW5zdGFuY2UuZXhpdCgpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdG1lcmdlUERGOiB7XG5cdFx0XHRza2lwUXVldWU6IHRydWUsXG5cdFx0XHRjaGVjazogbmV3IFNpbXBsZVNjaGVtYSh7XG5cdFx0XHRcdGZpbGVLZXlzOiB7XG5cdFx0XHRcdFx0dHlwZTogQXJyYXlcblx0XHRcdFx0fSxcblx0XHRcdFx0J2ZpbGVLZXlzLiQnOiB7XG5cdFx0XHRcdFx0dHlwZTogU3RyaW5nXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGZpbGVOYW1lOiB7XG5cdFx0XHRcdFx0dHlwZTogU3RyaW5nXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGZpbGVUeXBlOiB7XG5cdFx0XHRcdFx0dHlwZTogU3RyaW5nLFxuXHRcdFx0XHRcdG9wdGlvbmFsOiB0cnVlXG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0ZnVuY3Rpb246IGZ1bmN0aW9uKGZpbGVLZXlzOiBzdHJpbmdbXSwgZmlsZU5hbWU6IHN0cmluZywgZmlsZVR5cGU/OiBzdHJpbmcpIHtcblx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblxuXHRcdFx0XHRcdHRoaXMuY2FsbE1ldGhvZEludGVybmFsLmNhbGwodGhpcywgJ2dldENDUHJvY2Vzc1VSTCcpLnRoZW4ocmVzQ0MgPT4ge1xuXHRcdFx0XHRcdFx0bGV0IG1lcmdlRmlsZU5hbWUgPSAndXBsb2Fkcy8nICsgRGF0ZS5ub3coKSArICctJyArIChwZGZDbnQrKykgKyAnLScgKyBmaWxlTmFtZTtcblx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdC8vc2VuZCByZXF1ZXN0XG5cdFx0XHRcdFx0XHRyZXF1ZXN0KHtcblx0XHRcdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXG5cdFx0XHRcdFx0XHRcdHVybDogJ2h0dHBzOicgKyAgcmVzQ0MudXJsLFxuXHRcdFx0XHRcdFx0XHRoZWFkZXJzOiB7XG5cdFx0XHRcdFx0XHRcdFx0J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRqc29uOiB7XG5cdFx0XHRcdFx0XHRcdFx0bW9kZTogJ2NvbWJpbmUnLFxuXHRcdFx0XHRcdFx0XHRcdGlucHV0OiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRzMzoge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQnYWNjZXNza2V5aWQnOiB0aGlzLnNlcnZlckNvbmZpZ1snQVdTQUNDRVNTS0VZSUQnXSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0J3NlY3JldGFjY2Vzc2tleSc6IHRoaXMuc2VydmVyQ29uZmlnWydBV1NTRUNSRVRBQ0NFU1NLRVknXSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0J3JlZ2lvbic6IHRoaXMuc2VydmVyQ29uZmlnWydBV1NSRUdJT04nXSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0J2J1Y2tldCc6IHRoaXMuc2VydmVyQ29uZmlnWydBV1NCVUNLRVQnXVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0ZmlsZXM6IGZpbGVLZXlzLFxuXHRcdFx0XHRcdFx0XHRcdG91dHB1dGZvcm1hdDogJ3BkZicsXG5cdFx0XHRcdFx0XHRcdFx0d2FpdDogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRvdXRwdXQ6IHtcblx0XHRcdFx0XHRcdFx0XHRcdCdzMyc6IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0J2FjY2Vzc2tleWlkJzogdGhpcy5zZXJ2ZXJDb25maWdbJ0FXU0FDQ0VTU0tFWUlEJ10sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdzZWNyZXRhY2Nlc3NrZXknOiB0aGlzLnNlcnZlckNvbmZpZ1snQVdTU0VDUkVUQUNDRVNTS0VZJ10sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdyZWdpb24nOiB0aGlzLnNlcnZlckNvbmZpZ1snQVdTUkVHSU9OJ10sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdidWNrZXQnOiB0aGlzLnNlcnZlckNvbmZpZ1snQVdTQlVDS0VUJ10sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdwYXRoJzogbWVyZ2VGaWxlTmFtZVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0Y29udmVydGVyb3B0aW9uczoge1xuXHRcdFx0XHRcdFx0XHRcdFx0J3Jlc2l6ZSc6ICc2MTJ4NzkyJyxcblx0XHRcdFx0XHRcdFx0XHRcdCdyZXNpemVtb2RlJzogJ3NjYWxlJyxcblx0XHRcdFx0XHRcdFx0XHRcdCdyZXNpemVlbmxhcmdlJzogbnVsbCxcblx0XHRcdFx0XHRcdFx0XHRcdCdncmF5c2NhbGUnOiBudWxsLFxuXHRcdFx0XHRcdFx0XHRcdFx0J2F1dG9fb3JpZW50JzogbnVsbCxcblx0XHRcdFx0XHRcdFx0XHRcdCdzdHJpcF9tZXRhdGFncyc6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRcdFx0J2RlbnNpdHknOiA3Mixcblx0XHRcdFx0XHRcdFx0XHRcdCdyb3RhdGUnOiBudWxsLFxuXHRcdFx0XHRcdFx0XHRcdFx0J2NvbW1hbmQnOiBudWxsXG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSwgKGVycm9yLCByZXNwb25zZSwgYm9keSkgPT4ge1xuXG5cdFx0XHRcdFx0XHRcdGlmICghZXJyb3IpIHtcblxuXHRcdFx0XHRcdFx0XHRcdGxldCByZXNGaWxlOiBGaWxlTW9kZWwgPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRfaWQ6IFR5cGVzLk9iamVjdElkKCkudG9IZXhTdHJpbmcoKSxcblx0XHRcdFx0XHRcdFx0XHRcdF9fdjogMCxcblx0XHRcdFx0XHRcdFx0XHRcdG5hbWU6IGZpbGVOYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0c2l6ZTogYm9keS5vdXRwdXQuc2l6ZSxcblx0XHRcdFx0XHRcdFx0XHRcdGtleTogbWVyZ2VGaWxlTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdHR5cGU6IGZpbGVUeXBlID8gZmlsZVR5cGUgOiAnJyxcblx0XHRcdFx0XHRcdFx0XHRcdG9yZGVyOiAtMVxuXHRcdFx0XHRcdFx0XHRcdH07XG5cblx0XHRcdFx0XHRcdFx0XHRpZiAoYm9keS5vdXRwdXQuc2l6ZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5jYWxsTWV0aG9kSW50ZXJuYWwuY2FsbCh0aGlzLCAnaW5zZXJ0RG9jdW1lbnQnLCAnZmlsZXMnLCByZXNGaWxlLCAoZXJyVXBGaWxlLCByZXNVcEZpbGUpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHJlc1VwRmlsZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc0ZpbGUuc3RhdHVzID0gJ1VwbG9hZGVkJztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJlc0ZpbGUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlamVjdChlcnJVcEZpbGUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZWplY3QoJ01lcmdlZCBmaWxlIGhhcyBubyBzaXplLCBtZXJnZSBmYWlsZWQnKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVqZWN0KGVycm9yKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSwgZXJyQ0MgPT4gcmVqZWN0KGVyckNDKSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0bWVyZ2VQREZOb1VwbG9hZDoge1xuXHRcdFx0c2tpcFF1ZXVlOiB0cnVlLFxuXHRcdFx0Y2hlY2s6IG5ldyBTaW1wbGVTY2hlbWEoe1xuXHRcdFx0XHRmaWxlS2V5czoge1xuXHRcdFx0XHRcdHR5cGU6IEFycmF5XG5cdFx0XHRcdH0sXG5cdFx0XHRcdCdmaWxlS2V5cy4kJzoge1xuXHRcdFx0XHRcdHR5cGU6IFN0cmluZ1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRmaWxlTmFtZToge1xuXHRcdFx0XHRcdHR5cGU6IFN0cmluZ1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRmaWxlVHlwZToge1xuXHRcdFx0XHRcdHR5cGU6IFN0cmluZyxcblx0XHRcdFx0XHRvcHRpb25hbDogdHJ1ZVxuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdGZ1bmN0aW9uOiBmdW5jdGlvbihmaWxlS2V5czogc3RyaW5nW10sIGZpbGVOYW1lOiBzdHJpbmcsIGZpbGVUeXBlPzogc3RyaW5nKSB7XG5cdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cblx0XHRcdFx0XHR0aGlzLmNhbGxNZXRob2RJbnRlcm5hbC5jYWxsKHRoaXMsICdnZXRDQ1Byb2Nlc3NVUkwnKS50aGVuKHJlc0NDID0+IHtcblx0XHRcdFx0XHRcdGxldCBtZXJnZUZpbGVOYW1lID0gJ3VwbG9hZHMvJyArIERhdGUubm93KCkgKyAnLScgKyAocGRmQ250KyspICsgJy0nICsgZmlsZU5hbWU7XG5cdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHQvL3NlbmQgcmVxdWVzdFxuXHRcdFx0XHRcdFx0cmVxdWVzdCh7XG5cdFx0XHRcdFx0XHRcdG1ldGhvZDogJ1BPU1QnLFxuXHRcdFx0XHRcdFx0XHR1cmw6ICdodHRwczonICsgIHJlc0NDLnVybCxcblx0XHRcdFx0XHRcdFx0aGVhZGVyczoge1xuXHRcdFx0XHRcdFx0XHRcdCdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0anNvbjoge1xuXHRcdFx0XHRcdFx0XHRcdG1vZGU6ICdjb21iaW5lJyxcblx0XHRcdFx0XHRcdFx0XHRpbnB1dDoge1xuXHRcdFx0XHRcdFx0XHRcdFx0czM6IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0J2FjY2Vzc2tleWlkJzogdGhpcy5zZXJ2ZXJDb25maWdbJ0FXU0FDQ0VTU0tFWUlEJ10sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdzZWNyZXRhY2Nlc3NrZXknOiB0aGlzLnNlcnZlckNvbmZpZ1snQVdTU0VDUkVUQUNDRVNTS0VZJ10sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdyZWdpb24nOiB0aGlzLnNlcnZlckNvbmZpZ1snQVdTUkVHSU9OJ10sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdidWNrZXQnOiB0aGlzLnNlcnZlckNvbmZpZ1snQVdTQlVDS0VUJ11cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdGZpbGVzOiBmaWxlS2V5cyxcblx0XHRcdFx0XHRcdFx0XHRvdXRwdXRmb3JtYXQ6ICdwZGYnLFxuXHRcdFx0XHRcdFx0XHRcdHdhaXQ6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0b3V0cHV0OiB7XG5cdFx0XHRcdFx0XHRcdFx0XHQnczMnOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdhY2Nlc3NrZXlpZCc6IHRoaXMuc2VydmVyQ29uZmlnWydBV1NBQ0NFU1NLRVlJRCddLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQnc2VjcmV0YWNjZXNza2V5JzogdGhpcy5zZXJ2ZXJDb25maWdbJ0FXU1NFQ1JFVEFDQ0VTU0tFWSddLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQncmVnaW9uJzogdGhpcy5zZXJ2ZXJDb25maWdbJ0FXU1JFR0lPTiddLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQnYnVja2V0JzogdGhpcy5zZXJ2ZXJDb25maWdbJ0FXU0JVQ0tFVCddLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQncGF0aCc6IG1lcmdlRmlsZU5hbWVcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdGNvbnZlcnRlcm9wdGlvbnM6IHtcblx0XHRcdFx0XHRcdFx0XHRcdCdyZXNpemUnOiAnNjEyeDc5MicsXG5cdFx0XHRcdFx0XHRcdFx0XHQncmVzaXplbW9kZSc6ICdzY2FsZScsXG5cdFx0XHRcdFx0XHRcdFx0XHQncmVzaXplZW5sYXJnZSc6IG51bGwsXG5cdFx0XHRcdFx0XHRcdFx0XHQnZ3JheXNjYWxlJzogbnVsbCxcblx0XHRcdFx0XHRcdFx0XHRcdCdhdXRvX29yaWVudCc6IG51bGwsXG5cdFx0XHRcdFx0XHRcdFx0XHQnc3RyaXBfbWV0YXRhZ3MnOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0XHRcdCdkZW5zaXR5JzogNzIsXG5cdFx0XHRcdFx0XHRcdFx0XHQncm90YXRlJzogbnVsbCxcblx0XHRcdFx0XHRcdFx0XHRcdCdjb21tYW5kJzogbnVsbFxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0sIChlcnJvciwgcmVzcG9uc2UsIGJvZHkpID0+IHtcblxuXHRcdFx0XHRcdFx0XHRpZiAoIWVycm9yKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRsZXQgcmVzRmlsZTogRmlsZU1vZGVsID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0X2lkOiBUeXBlcy5PYmplY3RJZCgpLnRvSGV4U3RyaW5nKCksXG5cdFx0XHRcdFx0XHRcdFx0XHRuYW1lOiBmaWxlTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdHNpemU6IGJvZHkub3V0cHV0LnNpemUsXG5cdFx0XHRcdFx0XHRcdFx0XHRrZXk6IG1lcmdlRmlsZU5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiBmaWxlVHlwZSA/IGZpbGVUeXBlIDogJycsXG5cdFx0XHRcdFx0XHRcdFx0XHRvcmRlcjogLTFcblx0XHRcdFx0XHRcdFx0XHR9O1xuXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5jYWxsTWV0aG9kSW50ZXJuYWwuY2FsbCh0aGlzLCAnaW5zZXJ0RG9jdW1lbnQnLCAnZmlsZXMnLCByZXNGaWxlLCAoZXJyVXBGaWxlLCByZXNVcEZpbGUpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChyZXNVcEZpbGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzRmlsZS5zdGF0dXMgPSAnVXBsb2FkZWQnO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUocmVzRmlsZSk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoYXQuY2FsbE1ldGhvZEludGVybmFsLmNhbGwodGhhdCwgJ2RlbGV0ZUZpbGUnLCBtZXJnZUZpbGVOYW1lKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSwgNjAwMDApO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlamVjdChlcnJVcEZpbGUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdHJlamVjdChlcnJvcik7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0sIGVyckNDID0+IHJlamVjdChlcnJDQykpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xufSJdfQ==