UNPKG

vk-chat-bot

Version:

Package for easy creation of chat bots for VK communities (uses Callback API).

3 lines (2 loc) 13.9 kB
"use strict";var __awaiter=this&&this.__awaiter||function(t,e,i,s){return new(i||(i=Promise))((function(n,r){function o(t){try{h(s.next(t))}catch(t){r(t)}}function a(t){try{h(s.throw(t))}catch(t){r(t)}}function h(t){var e;t.done?n(t.value):(e=t.value,e instanceof i?e:new i((function(t){t(e)}))).then(o,a)}h((s=s.apply(t,e||[])).next())}))};Object.defineProperty(exports,"__esModule",{value:!0});const log_1=require("../extra/log"),keyboard_1=require("./keyboard");class Context{constructor(t,e,i,s){this.autoSend=!0,this.api=t,this.obj=i,this.msg=s,this.eventType=e,this.clear()}clear(){this.replyText="",this.attachment=[],this.kbdObject="",this.pid=this.getOriginalPid()}noAutoSend(){this.autoSend=!1}needsAutoSend(){return this.autoSend}getPid(){return this.pid}setPid(t){this.pid=t.toString()}getOriginalPid(){const t=this.eventType,e=this.obj;return"message_allow"===t?e.user_id:"message_typing_state"===t?e.from_id:e.peer_id}text(t){this.replyText=t}attach(t,e,i,s){s?this.attachment.push(`${t}${e}_${i}_${s}`):this.attachment.push(`${t}${e}_${i}`)}keyboard(t){this.kbdObject=JSON.stringify(t)}removeKeyboard(){this.keyboard(new keyboard_1.Keyboard)}send(){return __awaiter(this,void 0,void 0,(function*(){if("message_deny"===this.eventType)return void log_1.log().w(`No message was sent to peer ${this.pid} ("message_deny" event)`).from("ctx").now();if(""===this.replyText&&this.attachment===[])return void log_1.log().w(`No message was sent to peer ${this.pid} (text or attachment is required)`).from("ctx").now();const t=this.attachment.join(",");return this.api.send(this.pid,this.replyText,t,this.kbdObject)}))}}exports.default=Context; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwaS9jb250ZXh0LmpzIiwiYXBpL2NvbnRleHQudHMiXSwibmFtZXMiOlsiX19hd2FpdGVyIiwidGhpcyIsInRoaXNBcmciLCJfYXJndW1lbnRzIiwiUCIsImdlbmVyYXRvciIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwidmFsdWUiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJsb2dfMSIsInJlcXVpcmUiLCJrZXlib2FyZF8xIiwiQ29udGV4dCIsIltvYmplY3QgT2JqZWN0XSIsImFwaSIsImV2ZW50VHlwZSIsIm9iamVjdCIsIm1lc3NhZ2UiLCJhdXRvU2VuZCIsIm9iaiIsIm1zZyIsImNsZWFyIiwicmVwbHlUZXh0IiwiYXR0YWNobWVudCIsImtiZE9iamVjdCIsInBpZCIsImdldE9yaWdpbmFsUGlkIiwidG9TdHJpbmciLCJ1c2VyX2lkIiwiZnJvbV9pZCIsInBlZXJfaWQiLCJ0eHQiLCJ0eXBlIiwib3duZXJJZCIsInJlc0lkIiwiYWNjZXNzS2V5IiwicHVzaCIsImtiZCIsIkpTT04iLCJzdHJpbmdpZnkiLCJrZXlib2FyZCIsIktleWJvYXJkIiwibG9nIiwidyIsImZyb20iLCJub3ciLCJhdHRhY2htZW50TGlzdCIsImpvaW4iLCJzZW5kIiwiZGVmYXVsdCJdLCJtYXBwaW5ncyI6IkFBQUEsYUFDQSxJQUFJQSxVQUFhQyxNQUFRQSxLQUFLRCxXQUFjLFNBQVVFLEVBQVNDLEVBQVlDLEVBQUdDLEdBRTFFLE9BQU8sSUFBS0QsSUFBTUEsRUFBSUUsV0FBVSxTQUFVQyxFQUFTQyxHQUMvQyxTQUFTQyxFQUFVQyxHQUFTLElBQU1DLEVBQUtOLEVBQVVPLEtBQUtGLElBQVcsTUFBT0csR0FBS0wsRUFBT0ssSUFDcEYsU0FBU0MsRUFBU0osR0FBUyxJQUFNQyxFQUFLTixFQUFpQixNQUFFSyxJQUFXLE1BQU9HLEdBQUtMLEVBQU9LLElBQ3ZGLFNBQVNGLEVBQUtJLEdBSmxCLElBQWVMLEVBSWFLLEVBQU9DLEtBQU9ULEVBQVFRLEVBQU9MLFFBSjFDQSxFQUl5REssRUFBT0wsTUFKaERBLGFBQWlCTixFQUFJTSxFQUFRLElBQUlOLEdBQUUsU0FBVUcsR0FBV0EsRUFBUUcsT0FJVE8sS0FBS1IsRUFBV0ssR0FDbEdILEdBQU1OLEVBQVlBLEVBQVVhLE1BQU1oQixFQUFTQyxHQUFjLEtBQUtTLFlBR3RFTyxPQUFPQyxlQUFlQyxRQUFTLGFBQWMsQ0FBRVgsT0FBTyxJQ1Z0RCxNQUFBWSxNQUFBQyxRQUFBLGdCQUVBQyxXQUFBRCxRQUFBLGNBS0EsTUFBcUJFLFFBOERqQkMsWUFBbUJDLEVBQVVDLEVBQW1CQyxFQUFnQkMsR0EvQnhEN0IsS0FBQThCLFVBQVcsRUFnQ2Y5QixLQUFLMEIsSUFBTUEsRUFDWDFCLEtBQUsrQixJQUFNSCxFQUNYNUIsS0FBS2dDLElBQU1ILEVBQ1g3QixLQUFLMkIsVUFBWUEsRUFDakIzQixLQUFLaUMsUUFRRlIsUUFDSHpCLEtBQUtrQyxVQUFZLEdBQ2pCbEMsS0FBS21DLFdBQWEsR0FDbEJuQyxLQUFLb0MsVUFBWSxHQUNqQnBDLEtBQUtxQyxJQUFNckMsS0FBS3NDLGlCQU1iYixhQUNIekIsS0FBSzhCLFVBQVcsRUFNYkwsZ0JBQ0gsT0FBT3pCLEtBQUs4QixTQU1UTCxTQUNILE9BQU96QixLQUFLcUMsSUFRVFosT0FBT1ksR0FDVnJDLEtBQUtxQyxJQUFNQSxFQUFJRSxXQU1aZCxpQkFDSCxNQUFNRSxFQUFZM0IsS0FBSzJCLFVBQ2pCSSxFQUFNL0IsS0FBSytCLElBRWpCLE1BQWtCLGtCQUFkSixFQUNPSSxFQUFJUyxRQUNVLHlCQUFkYixFQUNBSSxFQUFJVSxRQUVKVixFQUFJVyxRQVNaakIsS0FBS2tCLEdBQ1IzQyxLQUFLa0MsVUFBWVMsRUFlZGxCLE9BQ0htQixFQUNBQyxFQUNBQyxFQUNBQyxHQUVJQSxFQUNBL0MsS0FBS21DLFdBQVdhLEtBQUssR0FBR0osSUFBT0MsS0FBV0MsS0FBU0MsS0FFbkQvQyxLQUFLbUMsV0FBV2EsS0FBSyxHQUFHSixJQUFPQyxLQUFXQyxLQWlDM0NyQixTQUFTd0IsR0FDWmpELEtBQUtvQyxVQUFZYyxLQUFLQyxVQUFVRixHQU03QnhCLGlCQUNIekIsS0FBS29ELFNBQVMsSUFBSTdCLFdBQUE4QixVQVFUNUIsT0QvSVQsT0FBTzFCLFVBQVVDLFVBQU0sT0FBUSxHQUFRLFlDZ0p2QyxHQUF1QixpQkFBbkJBLEtBQUsyQixVQUtMLFlBSkFOLE1BQUFpQyxNQUNLQyxFQUFFLCtCQUErQnZELEtBQUtxQyw4QkFDdENtQixLQUFLLE9BQ0xDLE1BSVQsR0FBdUIsS0FBbkJ6RCxLQUFLa0MsV0FBb0JsQyxLQUFLbUMsYUFBZSxHQUs3QyxZQUpBZCxNQUFBaUMsTUFDS0MsRUFBRSwrQkFBK0J2RCxLQUFLcUMsd0NBQ3RDbUIsS0FBSyxPQUNMQyxNQUlULE1BQU1DLEVBQWlCMUQsS0FBS21DLFdBQVd3QixLQUFLLEtBRzVDLE9BQU8zRCxLQUFLMEIsSUFBSWtDLEtBQ1o1RCxLQUFLcUMsSUFDTHJDLEtBQUtrQyxVQUNMd0IsRUFDQTFELEtBQUtvQyxlQXZPakJoQixRQUFBeUMsUUFBQXJDIiwiZmlsZSI6ImFwaS9jb250ZXh0LmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJpbXBvcnQgeyBsb2cgfSBmcm9tICcuLi9leHRyYS9sb2cnO1xuaW1wb3J0IEFQSSBmcm9tICcuL2FwaSc7XG5pbXBvcnQgeyBLZXlib2FyZCB9IGZyb20gJy4va2V5Ym9hcmQnO1xuXG4vKipcbiAqIENvbnRleHQsIHdoaWNoIGlzIHBhc3NlZCB0byBldmVyeSBoYW5kbGVyLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb250ZXh0IHtcbiAgICAvKipcbiAgICAgKiBBUEkuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGFwaTogQVBJO1xuXG4gICAgLyoqXG4gICAgICogRnVsbCBvYmplY3QgcGFzc2VkIGJ5IENhbGxiYWNrIEFQSS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBJZiBgbWVzc2FnZV9uZXdgLCBgbWVzc2FnZV9yZXBseWAsIGBtZXNzYWdlX2VkaXRgIG9yIGBub19tYXRjaGAgZXZlbnQsXG4gICAgICogdGhpcyBpcyBhIFtQcml2YXRlIG1lc3NhZ2Ugb2JqZWN0XShodHRwczovL3ZrLmNvbS9kZXYvb2JqZWN0cy9tZXNzYWdlKS5cbiAgICAgKiBFbHNlLCBzZWUgW0NhbGxiYWNrIEFQSSBkb2NzXShodHRwczovL3ZrLmNvbS9kZXYvY2FsbGJhY2tfYXBpKSBvclxuICAgICAqIFtHcm91cHMgRXZlbnRzIGRvY3NdKGh0dHBzOi8vdmsuY29tL2Rldi9ncm91cHNfZXZlbnRzKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgb2JqOiBhbnk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuXG4gICAgLyoqXG4gICAgICogSW5jb21pbmcgdXNlciBtZXNzYWdlLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIElmIFtbQ29yZS5jbWRdXSBoYW5kbGVyLCBjb250YWlucyBtZXNzYWdlIHdpdGhvdXQgYGNtZF9wcmVmaXhgIGFuZCB0aGUgY29tbWFuZFxuICAgICAqL1xuICAgIHB1YmxpYyBtc2c6IHN0cmluZzsgLy8gVE9ETzogU2hvdWxkIGJlIHJlYWRvbmx5XG5cbiAgICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBldmVudC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgZXZlbnRUeXBlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBEb2VzIHRoaXMgW1tDb250ZXh0XV0ncyByZXNwb25zZSBuZWVkIGF1dG8tc2VuZGluZz9cbiAgICAgKi9cbiAgICBwcml2YXRlIGF1dG9TZW5kID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBJRCBvZiBhIHBlZXIsIHRvIHdoaWNoIHRoZSByZXBseSBpcyBnb2luZyB0byBiZSBzZW50XG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogWW91IGNhbiBjaGFuZ2UgdGhpcyB1c2luZyBbW3NldFBpZF1dIG1ldGhvZCxcbiAgICAgKiB0aGUgb3JpZ2luYWwgUGVlciBJRCBjYW4gYmUgb2J0YWluZWQgdXNpbmcgW1tnZXRPcmlnaW5hbFBpZF1dLlxuICAgICAqL1xuICAgIHByaXZhdGUgcGlkOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUZXh0LCB3aGljaCB3aWxsIGJlIHVzZWQgaW4gdGhlIHJlcGx5XG4gICAgICovXG4gICAgcHJpdmF0ZSByZXBseVRleHQ6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEF0dGFjaG1lbnRzLCB3aGljaCB3aWxsIGJlIHVzZWQgaW4gdGhlIHJlcGx5XG4gICAgICovXG4gICAgcHJpdmF0ZSBhdHRhY2htZW50OiBzdHJpbmdbXTtcblxuICAgIC8qKlxuICAgICAqIE9iamVjdCBvZiB0aGUgW1tLZXlib2FyZF1dLCB3aGljaCB3aWxsIGJlIHVzZWQgaW4gdGhlIHJlcGx5XG4gICAgICovXG4gICAgcHJpdmF0ZSBrYmRPYmplY3Q6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBhcGkgdGhlIEFQSSBvYmplY3RcbiAgICAgKiBAcGFyYW0gZXZlbnRUeXBlIHRoZSBldmVudCB0eXBlXG4gICAgICogQHBhcmFtIG9iamVjdCBmdWxsIG9iamVjdCBmcm9tIENhbGxiYWNrIEFQSVxuICAgICAqIEBwYXJhbSBtZXNzYWdlIHRoZSBtZXNzYWdlXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGFwaTogQVBJLCBldmVudFR5cGU6IHN0cmluZywgb2JqZWN0OiBvYmplY3QsIG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICB0aGlzLmFwaSA9IGFwaTtcbiAgICAgICAgdGhpcy5vYmogPSBvYmplY3Q7XG4gICAgICAgIHRoaXMubXNnID0gbWVzc2FnZTtcbiAgICAgICAgdGhpcy5ldmVudFR5cGUgPSBldmVudFR5cGU7XG4gICAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhcnMgdGhlIGJ1ZmZlciBhbmQgcmVzZXRzIHRoZSBQZWVyIElEIGJhY2sgdG8gb3JpZ2luYWwuXG4gICAgICpcbiAgICAgKiBGb3IgZXhhbXBsZSwgYWZ0ZXIgY2FsbGluZyB0aGlzIHlvdSBjYW4gY29tcG9zZSBhbm90aGVyIG1lc3NhZ2UgdG8gdGhlIHNhbWUgdXNlci5cbiAgICAgKi9cbiAgICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVwbHlUZXh0ID0gJyc7XG4gICAgICAgIHRoaXMuYXR0YWNobWVudCA9IFtdO1xuICAgICAgICB0aGlzLmtiZE9iamVjdCA9ICcnO1xuICAgICAgICB0aGlzLnBpZCA9IHRoaXMuZ2V0T3JpZ2luYWxQaWQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcmV2ZW50cyB0aGlzIGhhbmRsZXIgZnJvbSBzZW5kaW5nIHRoZSBtZXNzYWdlIGF1dG9tYXRpY2FsbHkgYWZ0ZXIgaXQgZmluaXNoZXMuXG4gICAgICovXG4gICAgcHVibGljIG5vQXV0b1NlbmQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYXV0b1NlbmQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEb2VzIHRoaXMgW1tDb250ZXh0XV0ncyByZXNwb25zZSBuZWVkIGF1dG8tc2VuZGluZz9cbiAgICAgKi9cbiAgICBwdWJsaWMgbmVlZHNBdXRvU2VuZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXV0b1NlbmQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgY3VycmVudCBwZWVyIElELlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQaWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGlkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgYSBuZXcgcGVlciBJRC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwaWQgbmV3IHBlZXIgSURcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0UGlkKHBpZDogc3RyaW5nIHwgbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGlkID0gcGlkLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgb3JpZ2luYWwgcGVlciBJRCBmcm9tIHRoZSBDYWxsYmFjayBBUEkgb2JqZWN0LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRPcmlnaW5hbFBpZCgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBldmVudFR5cGUgPSB0aGlzLmV2ZW50VHlwZTtcbiAgICAgICAgY29uc3Qgb2JqID0gdGhpcy5vYmo7XG5cbiAgICAgICAgaWYgKGV2ZW50VHlwZSA9PT0gJ21lc3NhZ2VfYWxsb3cnKSB7XG4gICAgICAgICAgICByZXR1cm4gb2JqLnVzZXJfaWQ7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnbWVzc2FnZV90eXBpbmdfc3RhdGUnKSB7XG4gICAgICAgICAgICByZXR1cm4gb2JqLmZyb21faWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gb2JqLnBlZXJfaWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSByZXBseSBtZXNzYWdlIHRleHQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdHh0IG5ldyB0ZXh0XG4gICAgICovXG4gICAgcHVibGljIHRleHQodHh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXBseVRleHQgPSB0eHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhbiBhdHRhY2htZW50IHRvIHRoZSBtZXNzYWdlLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIE1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHBhcmFtZXRlcnMgY2FuIGJlIGZvdW5kIGluXG4gICAgICogW1ZLIEFQSSBkb2NzXShodHRwczovL3ZrLmNvbS9kZXYvbWVzc2FnZXMuc2VuZCkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdHlwZSB0aGUgdHlwZSBvZiBhdHRhY2htZW50XG4gICAgICogQHBhcmFtIG93bmVySWQgcmVzb3VyY2Ugb3duZXIgSURcbiAgICAgKiBAcGFyYW0gcmVzSWQgcmVzb3VyY2UgSURcbiAgICAgKiBAcGFyYW0gYWNjZXNzS2V5IHJlc291cmNlIGFjY2VzcyBrZXksIGlmIG5lZWRlZDtcbiAgICAgKiBzZWUgW0FjY2VzcyBLZXldKGh0dHBzOi8vdmsuY29tL2Rldi9hY2Nlc3Nfa2V5KSBwYWdlIGluIEFQSSBkb2NzIGZvciBtb3JlIGluZm9ybWF0aW9uXG4gICAgICovXG4gICAgcHVibGljIGF0dGFjaChcbiAgICAgICAgdHlwZTogc3RyaW5nLFxuICAgICAgICBvd25lcklkOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgICAgIHJlc0lkOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgICAgIGFjY2Vzc0tleT86IHN0cmluZyxcbiAgICApOiB2b2lkIHtcbiAgICAgICAgaWYgKGFjY2Vzc0tleSkge1xuICAgICAgICAgICAgdGhpcy5hdHRhY2htZW50LnB1c2goYCR7dHlwZX0ke293bmVySWR9XyR7cmVzSWR9XyR7YWNjZXNzS2V5fWApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hdHRhY2htZW50LnB1c2goYCR7dHlwZX0ke293bmVySWR9XyR7cmVzSWR9YCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBdHRhY2hlcyBhIGtleWJvYXJkLlxuICAgICAqXG4gICAgICogQHBhcmFtIGtiZCB0aGUga2V5Ym9hcmRcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgXG4gICAgICogY29uc3QgeyBDb2xvciwgS2V5Ym9hcmQsIGJ1dHRvbiB9ID0gdmsua2JkO1xuICAgICAqXG4gICAgICogY29yZS5jbWQoJ2tleWJvYXJkJywgJCA9PiB7XG4gICAgICogICAgIC8vIFNldCAndHJ1ZScgaW5zdGVhZCBvZiAnZmFsc2UnIHRvIG1ha2UgaXQgZGlzYXBwZWFyIGFmdGVyIGEgYnV0dG9uIHdhcyBwcmVzc2VkXG4gICAgICogICAgIHZhciBrYmQgPSBuZXcgS2V5Ym9hcmQoW1xuICAgICAqICAgICAgICAgLy8gUm93c1xuICAgICAqICAgICAgICAgW1xuICAgICAqICAgICAgICAgICAgIGJ1dHRvbi50ZXh0KCdEZWZhdWx0JyksXG4gICAgICogICAgICAgICAgICAgYnV0dG9uLnRleHQoJ1ByaW1hcnknLCBDb2xvci5QcmltYXJ5KSxcbiAgICAgKiAgICAgICAgICAgICBidXR0b24udGV4dCgnTmVnYXRpdmUnLCBDb2xvci5OZWdhdGl2ZSksXG4gICAgICogICAgICAgICAgICAgYnV0dG9uLnRleHQoJ1Bvc2l0aXZlJywgQ29sb3IuUG9zaXRpdmUpXG4gICAgICogICAgICAgICBdLFxuICAgICAqICAgICAgICAgW1xuICAgICAqICAgICAgICAgICAgIGJ1dHRvbi50ZXh0KCdNYXhpbXVtIHJvd3MgaXMgMTAsIGNvbHVtbnMgLSA0LicpXG4gICAgICogICAgICAgICBdLFxuICAgICAqICAgIF0sIGZhbHNlKTtcbiAgICAgKlxuICAgICAqICAgICQudGV4dCgnSGVyZSBpcyB5b3VyIGtleWJvYXJkLCBhcyBwcm9taXNlZC4nKTtcbiAgICAgKiAgICAkLmtleWJvYXJkKGtiZCk7XG4gICAgICogfSwgJ2RlbW8ga2V5Ym9hcmQnKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMga2V5Ym9hcmQoa2JkOiBLZXlib2FyZCk6IHZvaWQge1xuICAgICAgICB0aGlzLmtiZE9iamVjdCA9IEpTT04uc3RyaW5naWZ5KGtiZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXR0YWNoZXMgYW4gZW1wdHkga2V5Ym9hcmQuXG4gICAgICovXG4gICAgcHVibGljIHJlbW92ZUtleWJvYXJkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmtleWJvYXJkKG5ldyBLZXlib2FyZCgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZW5kcyB0aGUgY29tcG9zZWQgbWVzc2FnZSB0byB1c2VyLlxuICAgICAqICoqTm90ZToqKiBBZnRlciB0aGUgaGFuZGxlciBmaW5pc2hlcyBpdHMgd29yaywgdGhpcyBtZXRob2QgaXMgY2FsbGVkIGF1dG9tYXRpY2FsbHlcbiAgICAgKiAoaWYgW1tub0F1dG9TZW5kXV0gd2FzIG5vdCBjYWxsZWQpXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIHNlbmQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLmV2ZW50VHlwZSA9PT0gJ21lc3NhZ2VfZGVueScpIHtcbiAgICAgICAgICAgIGxvZygpXG4gICAgICAgICAgICAgICAgLncoYE5vIG1lc3NhZ2Ugd2FzIHNlbnQgdG8gcGVlciAke3RoaXMucGlkfSAoXCJtZXNzYWdlX2RlbnlcIiBldmVudClgKVxuICAgICAgICAgICAgICAgIC5mcm9tKCdjdHgnKVxuICAgICAgICAgICAgICAgIC5ub3coKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnJlcGx5VGV4dCA9PT0gJycgJiYgdGhpcy5hdHRhY2htZW50ID09PSBbXSkge1xuICAgICAgICAgICAgbG9nKClcbiAgICAgICAgICAgICAgICAudyhgTm8gbWVzc2FnZSB3YXMgc2VudCB0byBwZWVyICR7dGhpcy5waWR9ICh0ZXh0IG9yIGF0dGFjaG1lbnQgaXMgcmVxdWlyZWQpYClcbiAgICAgICAgICAgICAgICAuZnJvbSgnY3R4JylcbiAgICAgICAgICAgICAgICAubm93KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhdHRhY2htZW50TGlzdCA9IHRoaXMuYXR0YWNobWVudC5qb2luKCcsJyk7XG5cbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuICovXG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5zZW5kKFxuICAgICAgICAgICAgdGhpcy5waWQsXG4gICAgICAgICAgICB0aGlzLnJlcGx5VGV4dCxcbiAgICAgICAgICAgIGF0dGFjaG1lbnRMaXN0LFxuICAgICAgICAgICAgdGhpcy5rYmRPYmplY3QsXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19