1 line
99 KiB
JavaScript
1 line
99 KiB
JavaScript
(self.webpackChunktimetrex=self.webpackChunktimetrex||[]).push([["company-company-CompanyViewController","filebrowser-TImageAdvBrowser","filebrowser-TImageBrowser"],{8243:(__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("/* provided dependency */ var jQuery = __webpack_require__(9755);\n( function( $ ) {\n\n\t$.fn.TImageAdvBrowser = function( options ) {\n\n\t\tGlobal.addCss( 'global/widgets/filebrowser/TImageBrowser.css' );\n\t\tvar opts = $.extend( {}, $.fn.TImageAdvBrowser.defaults, options );\n\n\t\tvar $this = this;\n\t\tvar field;\n\t\tvar name = 'filedata';\n\n\t\tvar accept_filter = '';\n\n\t\tvar default_width = 177;\n\t\tvar default_height = 42;\n\n\t\tvar callBack = null;\n\n\t\tvar enabled = true;\n\n\t\tvar image;\n\n\t\tvar result_form_data;\n\n\t\tthis.setEnable = function( val ) {\n\t\t\tenabled = val;\n\n\t\t\tvar btn = this.children().eq( 1 );\n\t\t\tif ( !val ) {\n\t\t\t\tbtn.hide();\n\t\t\t} else {\n\t\t\t\tbtn.show();\n\t\t\t}\n\n\t\t};\n\n\t\tthis.clearErrorStyle = function() {\n\n\t\t};\n\n\t\tthis.getField = function() {\n\t\t\treturn field;\n\t\t};\n\n\t\tthis.getValue = function() {\n\t\t\treturn result_form_data;\n\t\t};\n\n\t\tthis.setImage = function( val ) {\n\t\t\tif ( !val ) {\n\t\t\t\timage.attr( 'src', '' );\n\t\t\t\timage.hide();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar d = new Date();\n\t\t\timage.hide();\n\t\t\timage.attr( 'src', val + '&t=' + d.getTime() + '&X-CSRF-Token=' + getCookie( 'CSRF-Token' ) );\n\t\t\timage.css( 'height', 'auto' );\n\t\t\timage.css( 'width', 'auto' );\n\n\t\t};\n\n\t\tthis.onImageLoad = function( image ) {\n\n\t\t\tvar image_height = $( image ).height() > 0 ? $( image ).height() : image.naturalHeight;\n\t\t\tvar image_width = $( image ).width() > 0 ? $( image ).width() : image.naturalWidth;\n\n\t\t\tif ( image_height > default_height ) {\n\t\t\t\t$( image ).css( 'height', default_height );\n\n\t\t\t}\n\n\t\t\tif ( image_width > default_width ) {\n\t\t\t\t$( image ).css( 'width', default_width );\n\t\t\t\t$( image ).css( 'height', 'auto' );\n\t\t\t}\n\n\t\t\t$this.trigger( 'setSize' );\n\n\t\t\tif ( image_height < 5 ) {\n\t\t\t\t$( image ).hide();\n\t\t\t} else {\n\t\t\t\t$( image ).show();\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setValue = function( val ) {\n\n\t\t\tif ( !val ) {\n\t\t\t\tval = '';\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setEnableDelete = function( val ) {\n\t\t\tvar image = $this.find( '.image' );\n\t\t\tif ( !val ) {\n\t\t\t\timage.removeAttr( 'enable-delete' );\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\timage.attr( 'enable-delete', 1 );\n\t\t\t}\n\t\t};\n\n\t\tthis.each( function() {\n\n\t\t\tvar o = $.meta ? $.extend( {}, opts, $( this ).data() ) : opts;\n\n\t\t\tfield = o.field;\n\n\t\t\tvar $$this = this;\n\n\t\t\t$( this ).find( '#upload_image' ).text( $.i18n._( 'Upload Image' ) );\n\n\t\t\tif ( o.callBack ) {\n\t\t\t\tcallBack = o.callBack;\n\t\t\t}\n\n\t\t\tif ( o.show_browser === false ) {\n\t\t\t\t$( this ).children().eq( 1 ).hide();\n\t\t\t}\n\n\t\t\tif ( o.default_width > 0 ) {\n\t\t\t\tdefault_width = o.default_width;\n\t\t\t}\n\n\t\t\tif ( o.default_height > 0 ) {\n\t\t\t\tdefault_height = o.default_height;\n\t\t\t}\n\n\t\t\tif ( Global.isSet( o.name ) ) {\n\t\t\t\tname = o.name;\n\t\t\t}\n\n\t\t\tif ( Global.isSet( accept_filter ) ) {\n\t\t\t\taccept_filter = o.accept_filter;\n\t\t\t}\n\n\t\t\tif ( Global.isSet( o.deleteImageHandler ) ) {\n\t\t\t\t$this.find( '.file-browser' ).on( 'deleteClick', function() {\n\t\t\t\t\to.deleteImageHandler();\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tvar browser = $( this ).children().eq( 1 );\n\t\t\tbrowser.bind( 'click', function() {\n\t\t\t\tIndexViewController.openWizard( 'UserPhotoWizard', null, function( form_data ) {\n\n\t\t\t\t\tif ( callBack ) {\n\t\t\t\t\t\tcallBack( form_data );\n\t\t\t\t\t}\n\n\t\t\t\t\tresult_form_data = form_data;\n\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\timage = $( this ).children().eq( 0 );\n\t\t\timage.on( 'load', function() {\n\t\t\t\t$this.onImageLoad( this );\n\t\t\t} );\n\n\t\t\timage.hide();\n\n\t\t} );\n\n\t\treturn this;\n\n\t};\n\n\t$.fn.TImageAdvBrowser.defaults = {};\n\t$.fn.TImageAdvBrowser.html_template = `\n\t<div class=\"file-browser\">\n\t\t<img class=\"image\">\n\t\t<button id=\"upload_image\" class=\"t-button file-browser-btn\" style=\"display: block\"></button>\n\t</div>\n\t`;\n\n} )( jQuery );//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODI0My5qcyIsIm1hcHBpbmdzIjoiO0FBQUE7O0FBRUE7O0FBRUE7QUFDQSx5QkFBeUI7O0FBRXpCO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxnQ0FBZ0M7O0FBRWhDOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxNQUFNO0FBQ04sS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMOztBQUVBLElBQUk7O0FBRUo7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSxHQUFHLE1BQU0iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9pbnRlcmZhY2UvaHRtbDUvZ2xvYmFsL3dpZGdldHMvZmlsZWJyb3dzZXIvVEltYWdlQWR2QnJvd3Nlci5qcz8xYzBiIl0sInNvdXJjZXNDb250ZW50IjpbIiggZnVuY3Rpb24oICQgKSB7XG5cblx0JC5mbi5USW1hZ2VBZHZCcm93c2VyID0gZnVuY3Rpb24oIG9wdGlvbnMgKSB7XG5cblx0XHRHbG9iYWwuYWRkQ3NzKCAnZ2xvYmFsL3dpZGdldHMvZmlsZWJyb3dzZXIvVEltYWdlQnJvd3Nlci5jc3MnICk7XG5cdFx0dmFyIG9wdHMgPSAkLmV4dGVuZCgge30sICQuZm4uVEltYWdlQWR2QnJvd3Nlci5kZWZhdWx0cywgb3B0aW9ucyApO1xuXG5cdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHR2YXIgZmllbGQ7XG5cdFx0dmFyIG5hbWUgPSAnZmlsZWRhdGEnO1xuXG5cdFx0dmFyIGFjY2VwdF9maWx0ZXIgPSAnJztcblxuXHRcdHZhciBkZWZhdWx0X3dpZHRoID0gMTc3O1xuXHRcdHZhciBkZWZhdWx0X2hlaWdodCA9IDQyO1xuXG5cdFx0dmFyIGNhbGxCYWNrID0gbnVsbDtcblxuXHRcdHZhciBlbmFibGVkID0gdHJ1ZTtcblxuXHRcdHZhciBpbWFnZTtcblxuXHRcdHZhciByZXN1bHRfZm9ybV9kYXRhO1xuXG5cdFx0dGhpcy5zZXRFbmFibGUgPSBmdW5jdGlvbiggdmFsICkge1xuXHRcdFx0ZW5hYmxlZCA9IHZhbDtcblxuXHRcdFx0dmFyIGJ0biA9IHRoaXMuY2hpbGRyZW4oKS5lcSggMSApO1xuXHRcdFx0aWYgKCAhdmFsICkge1xuXHRcdFx0XHRidG4uaGlkZSgpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0YnRuLnNob3coKTtcblx0XHRcdH1cblxuXHRcdH07XG5cblx0XHR0aGlzLmNsZWFyRXJyb3JTdHlsZSA9IGZ1bmN0aW9uKCkge1xuXG5cdFx0fTtcblxuXHRcdHRoaXMuZ2V0RmllbGQgPSBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiBmaWVsZDtcblx0XHR9O1xuXG5cdFx0dGhpcy5nZXRWYWx1ZSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIHJlc3VsdF9mb3JtX2RhdGE7XG5cdFx0fTtcblxuXHRcdHRoaXMuc2V0SW1hZ2UgPSBmdW5jdGlvbiggdmFsICkge1xuXHRcdFx0aWYgKCAhdmFsICkge1xuXHRcdFx0XHRpbWFnZS5hdHRyKCAnc3JjJywgJycgKTtcblx0XHRcdFx0aW1hZ2UuaGlkZSgpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdHZhciBkID0gbmV3IERhdGUoKTtcblx0XHRcdGltYWdlLmhpZGUoKTtcblx0XHRcdGltYWdlLmF0dHIoICdzcmMnLCB2YWwgKyAnJnQ9JyArIGQuZ2V0VGltZSgpICsgJyZYLUNTUkYtVG9rZW49JyArIGdldENvb2tpZSggJ0NTUkYtVG9rZW4nICkgKTtcblx0XHRcdGltYWdlLmNzcyggJ2hlaWdodCcsICdhdXRvJyApO1xuXHRcdFx0aW1hZ2UuY3NzKCAnd2lkdGgnLCAnYXV0bycgKTtcblxuXHRcdH07XG5cblx0XHR0aGlzLm9uSW1hZ2VMb2FkID0gZnVuY3Rpb24oIGltYWdlICkge1xuXG5cdFx0XHR2YXIgaW1hZ2VfaGVpZ2h0ID0gJCggaW1hZ2UgKS5oZWlnaHQoKSA+IDAgPyAkKCBpbWFnZSApLmhlaWdodCgpIDogaW1hZ2UubmF0dXJhbEhlaWdodDtcblx0XHRcdHZhciBpbWFnZV93aWR0aCA9ICQoIGltYWdlICkud2lkdGgoKSA+IDAgPyAkKCBpbWFnZSApLndpZHRoKCkgOiBpbWFnZS5uYXR1cmFsV2lkdGg7XG5cblx0XHRcdGlmICggaW1hZ2VfaGVpZ2h0ID4gZGVmYXVsdF9oZWlnaHQgKSB7XG5cdFx0XHRcdCQoIGltYWdlICkuY3NzKCAnaGVpZ2h0JywgZGVmYXVsdF9oZWlnaHQgKTtcblxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGltYWdlX3dpZHRoID4gZGVmYXVsdF93aWR0aCApIHtcblx0XHRcdFx0JCggaW1hZ2UgKS5jc3MoICd3aWR0aCcsIGRlZmF1bHRfd2lkdGggKTtcblx0XHRcdFx0JCggaW1hZ2UgKS5jc3MoICdoZWlnaHQnLCAnYXV0bycgKTtcblx0XHRcdH1cblxuXHRcdFx0JHRoaXMudHJpZ2dlciggJ3NldFNpemUnICk7XG5cblx0XHRcdGlmICggaW1hZ2VfaGVpZ2h0IDwgNSApIHtcblx0XHRcdFx0JCggaW1hZ2UgKS5oaWRlKCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQkKCBpbWFnZSApLnNob3coKTtcblx0XHRcdH1cblxuXHRcdH07XG5cblx0XHR0aGlzLnNldFZhbHVlID0gZnVuY3Rpb24oIHZhbCApIHtcblxuXHRcdFx0aWYgKCAhdmFsICkge1xuXHRcdFx0XHR2YWwgPSAnJztcblx0XHRcdH1cblxuXHRcdH07XG5cblx0XHR0aGlzLnNldEVuYWJsZURlbGV0ZSA9IGZ1bmN0aW9uKCB2YWwgKSB7XG5cdFx0XHR2YXIgaW1hZ2UgPSAkdGhpcy5maW5kKCAnLmltYWdlJyApO1xuXHRcdFx0aWYgKCAhdmFsICkge1xuXHRcdFx0XHRpbWFnZS5yZW1vdmVBdHRyKCAnZW5hYmxlLWRlbGV0ZScgKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aW1hZ2UuYXR0ciggJ2VuYWJsZS1kZWxldGUnLCAxICk7XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cblx0XHRcdHZhciBvID0gJC5tZXRhID8gJC5leHRlbmQoIHt9LCBvcHRzLCAkKCB0aGlzICkuZGF0YSgpICkgOiBvcHRzO1xuXG5cdFx0XHRmaWVsZCA9IG8uZmllbGQ7XG5cblx0XHRcdHZhciAkJHRoaXMgPSB0aGlzO1xuXG5cdFx0XHQkKCB0aGlzICkuZmluZCggJyN1cGxvYWRfaW1hZ2UnICkudGV4dCggJC5pMThuLl8oICdVcGxvYWQgSW1hZ2UnICkgKTtcblxuXHRcdFx0aWYgKCBvLmNhbGxCYWNrICkge1xuXHRcdFx0XHRjYWxsQmFjayA9IG8uY2FsbEJhY2s7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggby5zaG93X2Jyb3dzZXIgPT09IGZhbHNlICkge1xuXHRcdFx0XHQkKCB0aGlzICkuY2hpbGRyZW4oKS5lcSggMSApLmhpZGUoKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBvLmRlZmF1bHRfd2lkdGggPiAwICkge1xuXHRcdFx0XHRkZWZhdWx0X3dpZHRoID0gby5kZWZhdWx0X3dpZHRoO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIG8uZGVmYXVsdF9oZWlnaHQgPiAwICkge1xuXHRcdFx0XHRkZWZhdWx0X2hlaWdodCA9IG8uZGVmYXVsdF9oZWlnaHQ7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggR2xvYmFsLmlzU2V0KCBvLm5hbWUgKSApIHtcblx0XHRcdFx0bmFtZSA9IG8ubmFtZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBHbG9iYWwuaXNTZXQoIGFjY2VwdF9maWx0ZXIgKSApIHtcblx0XHRcdFx0YWNjZXB0X2ZpbHRlciA9IG8uYWNjZXB0X2ZpbHRlcjtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBHbG9iYWwuaXNTZXQoIG8uZGVsZXRlSW1hZ2VIYW5kbGVyICkgKSB7XG5cdFx0XHRcdCR0aGlzLmZpbmQoICcuZmlsZS1icm93c2VyJyApLm9uKCAnZGVsZXRlQ2xpY2snLCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRvLmRlbGV0ZUltYWdlSGFuZGxlcigpO1xuXHRcdFx0XHR9ICk7XG5cblx0XHRcdH1cblxuXHRcdFx0dmFyIGJyb3dzZXIgPSAkKCB0aGlzICkuY2hpbGRyZW4oKS5lcSggMSApO1xuXHRcdFx0YnJvd3Nlci5iaW5kKCAnY2xpY2snLCBmdW5jdGlvbigpIHtcblx0XHRcdFx0SW5kZXhWaWV3Q29udHJvbGxlci5vcGVuV2l6YXJkKCAnVXNlclBob3RvV2l6YXJkJywgbnVsbCwgZnVuY3Rpb24oIGZvcm1fZGF0YSApIHtcblxuXHRcdFx0XHRcdGlmICggY2FsbEJhY2sgKSB7XG5cdFx0XHRcdFx0XHRjYWxsQmFjayggZm9ybV9kYXRhICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cmVzdWx0X2Zvcm1fZGF0YSA9IGZvcm1fZGF0YTtcblxuXHRcdFx0XHR9ICk7XG5cdFx0XHR9ICk7XG5cblx0XHRcdGltYWdlID0gJCggdGhpcyApLmNoaWxkcmVuKCkuZXEoIDAgKTtcblx0XHRcdGltYWdlLm9uKCAnbG9hZCcsIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHQkdGhpcy5vbkltYWdlTG9hZCggdGhpcyApO1xuXHRcdFx0fSApO1xuXG5cdFx0XHRpbWFnZS5oaWRlKCk7XG5cblx0XHR9ICk7XG5cblx0XHRyZXR1cm4gdGhpcztcblxuXHR9O1xuXG5cdCQuZm4uVEltYWdlQWR2QnJvd3Nlci5kZWZhdWx0cyA9IHt9O1xuXHQkLmZuLlRJbWFnZUFkdkJyb3dzZXIuaHRtbF90ZW1wbGF0ZSA9IGBcblx0PGRpdiBjbGFzcz1cImZpbGUtYnJvd3NlclwiPlxuXHRcdDxpbWcgY2xhc3M9XCJpbWFnZVwiPlxuXHRcdDxidXR0b24gaWQ9XCJ1cGxvYWRfaW1hZ2VcIiBjbGFzcz1cInQtYnV0dG9uIGZpbGUtYnJvd3Nlci1idG5cIiBzdHlsZT1cImRpc3BsYXk6IGJsb2NrXCI+PC9idXR0b24+XG5cdDwvZGl2PlxuXHRgO1xuXG59ICkoIGpRdWVyeSApOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///8243\n")},8326:(__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("/* provided dependency */ var jQuery = __webpack_require__(9755);\n( function( $ ) {\n\n\t$.fn.TImageBrowser = function( options ) {\n\t\tGlobal.addCss( 'global/widgets/filebrowser/TImageBrowser.css' );\n\t\tvar opts = $.extend( {}, $.fn.TImageBrowser.defaults, options );\n\n\t\tvar $this = this;\n\t\tvar field;\n\t\tvar id = 'file_browser';\n\t\tvar name = 'filedata';\n\t\tvar browser;\n\n\t\tvar accept_filter = '';\n\n\t\tvar default_width = 177;\n\t\tvar default_height = 42;\n\t\tvar enabled = true;\n\n\t\tthis.setEnabled = function( val ) {\n\t\t\tenabled = val;\n\n\t\t\tvar btn = this.find( '.browser-form input' );\n\n\t\t\tif ( !val ) {\n\t\t\t\tbtn.attr( 'disabled', true );\n\t\t\t\tbtn.removeClass( 'disable-element' ).addClass( 'disable-element' );\n\t\t\t} else {\n\t\t\t\tbtn.removeAttr( 'disabled' );\n\t\t\t\tbtn.removeClass( 'disable-element' );\n\t\t\t}\n\n\t\t};\n\n\t\tthis.clearErrorStyle = function() {\n\n\t\t};\n\n\t\tthis.getFileName = function() {\n\n\t\t\treturn browser.val();\n\t\t};\n\n\t\tthis.getField = function() {\n\t\t\treturn field;\n\t\t};\n\n\t\tthis.setEnableDelete = function( val ) {\n\t\t\tvar image = $this.find( '.image' );\n\t\t\tif ( !val ) {\n\t\t\t\timage.removeAttr( 'enable-delete' );\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\timage.attr( 'enable-delete', 1 );\n\t\t\t}\n\t\t};\n\n\t\tthis.getValue = function() {\n\t\t\tvar form_data;\n\t\t\tif ( browser && browser.val() ) {\n\n\t\t\t\tif ( typeof FormData == 'undefined' ) {\n\t\t\t\t\tform_data = $this.find( '.browser-form' );\n\t\t\t\t} else {\n\t\t\t\t\tform_data = new FormData( $( $this.find( '.browser-form' ) )[0] );\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tform_data = null;\n\t\t\t}\n\n\t\t\treturn form_data;\n\t\t};\n\n\t\tthis.getImageSrc = function() {\n\t\t\tvar image = $this.find( '.image' );\n\t\t\treturn image.attr( 'src' );\n\t\t};\n\n\t\tthis.setImage = function( val ) {\n\t\t\tvar image = $this.find( '.image' );\n\n\t\t\tif ( !val ) {\n\t\t\t\timage.attr( 'src', '' );\n\t\t\t\timage.hide();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar d = new Date();\n\t\t\timage.hide();\n\t\t\timage.attr( 'src', val + '&t=' + d.getTime() );\n\t\t\timage.css( 'height', 'auto' );\n\t\t\timage.css( 'width', 'auto' );\n\n\t\t};\n\n\t\tvar onImageLoad = function( image ) {\n\n\t\t\tvar image_height = $( image ).height() > 0 ? $( image ).height() : image.naturalHeight;\n\t\t\tvar image_width = $( image ).width() > 0 ? $( image ).width() : image.naturalWidth;\n\n\t\t\tif ( image_height > default_height ) {\n\t\t\t\t$( image ).css( 'height', default_height );\n\n\t\t\t}\n\n\t\t\tif ( image_width > default_width ) {\n\t\t\t\t$( image ).css( 'width', default_width );\n\t\t\t\t$( image ).css( 'height', 'auto' );\n\t\t\t}\n\n\t\t\t$this.trigger( 'setSize' );\n\n\t\t\tif ( image_height < 5 ) {\n\t\t\t\t$( image ).hide();\n\t\t\t} else {\n\t\t\t\t$( image ).show();\n\t\t\t}\n\t\t};\n\n\t\tthis.setValue = function( val ) {\n\n\t\t\tif ( !val ) {\n\t\t\t\tval = '';\n\t\t\t}\n\n\t\t};\n\n\t\tthis.each( function() {\n\t\t\tvar o = $.meta ? $.extend( {}, opts, $( this ).data() ) : opts;\n\n\t\t\tfield = o.field;\n\n\t\t\t// var $this = this;\n\n\t\t\tif ( o.default_width > 0 ) {\n\t\t\t\tdefault_width = o.default_width;\n\t\t\t}\n\n\t\t\tif ( o.default_height > 0 ) {\n\t\t\t\tdefault_height = o.default_height;\n\t\t\t}\n\n\t\t\tif ( Global.isSet( o.name ) ) {\n\t\t\t\tname = o.name;\n\t\t\t}\n\n\t\t\tif ( Global.isSet( accept_filter ) ) {\n\t\t\t\taccept_filter = o.accept_filter;\n\t\t\t}\n\n\t\t\tbrowser = $( this ).find( '.browser' );\n\t\t\tvar image = $( this ).find( '.image' );\n\t\t\timage.hide();\n\t\t\timage.on( 'load', function() {\n\t\t\t\tonImageLoad( this );\n\n\t\t\t} );\n\n\t\t\tif ( accept_filter ) {\n\t\t\t\tbrowser.attr( 'accept', accept_filter );\n\t\t\t} else {\n\t\t\t\taccept_filter = 'image/*';\n\t\t\t\tbrowser.attr( 'accept', 'image/*' );\n\t\t\t}\n\n\t\t\tbrowser.attr( 'id', id );\n\t\t\tbrowser.attr( 'name', name );\n\n\t\t\tif ( Global.isSet( o.changeHandler ) ) {\n\n\t\t\t\t$this.bind( 'imageChange', o.changeHandler );\n\t\t\t}\n\t\t\tif ( Global.isSet( o.deleteImageHandler ) ) {\n\t\t\t\tthis.find( '.file-browser' ).on( 'deleteClick', function() {\n\t\t\t\t\to.deleteImageHandler();\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tbrowser.bind( 'change', function() {\n\t\t\t\timage.hide();\n\n\t\t\t\tif ( typeof FileReader != 'undefined' ) {\n\n\t\t\t\t\tvar files = !!this.files ? this.files : [];\n\n\t\t\t\t\t// If no files were selected, or no FileReader support, return\n\t\t\t\t\tif ( !files.length || !window.FileReader ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( accept_filter === 'image/*' ) {\n\t\t\t\t\t\t// Create a new instance of the FileReader\n\t\t\t\t\t\tvar reader = new FileReader();\n\n\t\t\t\t\t\t// Read the local file as a DataURL\n\t\t\t\t\t\treader.readAsDataURL( files[0] );\n\n\t\t\t\t\t\t// When loaded, set image data as background of div\n\t\t\t\t\t\treader.onloadend = function() {\n\t\t\t\t\t\t\tvar url = this.result;\n\t\t\t\t\t\t\timage.attr( 'src', url );\n\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t$this.trigger( 'imageChange', [$this] );\n\n\t\t\t} );\n\n\t\t} );\n\n\t\treturn this;\n\n\t};\n\n\t$.fn.TImageBrowser.defaults = {};\n\t$.fn.TImageBrowser.html_template = `\n\t<div class=\"file-browser\">\n\t\t<img class=\"image\">\n\t\t<form enctype=\"multipart/form-data\" class=\"browser-form\">\n\t\t\t<input name=\"filedata\" class=\"browser\" type=\"file\"/>\n\t\t</form>\n\t</div>\n\t`;\n\n} )( jQuery );//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODMyNi5qcyIsIm1hcHBpbmdzIjoiO0FBQUE7O0FBRUE7QUFDQTtBQUNBLHlCQUF5Qjs7QUFFekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUEsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLGdDQUFnQzs7QUFFaEM7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQSxLQUFLOztBQUVMLElBQUk7O0FBRUo7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUUsR0FBRyxNQUFNIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vaW50ZXJmYWNlL2h0bWw1L2dsb2JhbC93aWRnZXRzL2ZpbGVicm93c2VyL1RJbWFnZUJyb3dzZXIuanM/MjAyOSJdLCJzb3VyY2VzQ29udGVudCI6WyIoIGZ1bmN0aW9uKCAkICkge1xuXG5cdCQuZm4uVEltYWdlQnJvd3NlciA9IGZ1bmN0aW9uKCBvcHRpb25zICkge1xuXHRcdEdsb2JhbC5hZGRDc3MoICdnbG9iYWwvd2lkZ2V0cy9maWxlYnJvd3Nlci9USW1hZ2VCcm93c2VyLmNzcycgKTtcblx0XHR2YXIgb3B0cyA9ICQuZXh0ZW5kKCB7fSwgJC5mbi5USW1hZ2VCcm93c2VyLmRlZmF1bHRzLCBvcHRpb25zICk7XG5cblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdHZhciBmaWVsZDtcblx0XHR2YXIgaWQgPSAnZmlsZV9icm93c2VyJztcblx0XHR2YXIgbmFtZSA9ICdmaWxlZGF0YSc7XG5cdFx0dmFyIGJyb3dzZXI7XG5cblx0XHR2YXIgYWNjZXB0X2ZpbHRlciA9ICcnO1xuXG5cdFx0dmFyIGRlZmF1bHRfd2lkdGggPSAxNzc7XG5cdFx0dmFyIGRlZmF1bHRfaGVpZ2h0ID0gNDI7XG5cdFx0dmFyIGVuYWJsZWQgPSB0cnVlO1xuXG5cdFx0dGhpcy5zZXRFbmFibGVkID0gZnVuY3Rpb24oIHZhbCApIHtcblx0XHRcdGVuYWJsZWQgPSB2YWw7XG5cblx0XHRcdHZhciBidG4gPSB0aGlzLmZpbmQoICcuYnJvd3Nlci1mb3JtIGlucHV0JyApO1xuXG5cdFx0XHRpZiAoICF2YWwgKSB7XG5cdFx0XHRcdGJ0bi5hdHRyKCAnZGlzYWJsZWQnLCB0cnVlICk7XG5cdFx0XHRcdGJ0bi5yZW1vdmVDbGFzcyggJ2Rpc2FibGUtZWxlbWVudCcgKS5hZGRDbGFzcyggJ2Rpc2FibGUtZWxlbWVudCcgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGJ0bi5yZW1vdmVBdHRyKCAnZGlzYWJsZWQnICk7XG5cdFx0XHRcdGJ0bi5yZW1vdmVDbGFzcyggJ2Rpc2FibGUtZWxlbWVudCcgKTtcblx0XHRcdH1cblxuXHRcdH07XG5cblx0XHR0aGlzLmNsZWFyRXJyb3JTdHlsZSA9IGZ1bmN0aW9uKCkge1xuXG5cdFx0fTtcblxuXHRcdHRoaXMuZ2V0RmlsZU5hbWUgPSBmdW5jdGlvbigpIHtcblxuXHRcdFx0cmV0dXJuIGJyb3dzZXIudmFsKCk7XG5cdFx0fTtcblxuXHRcdHRoaXMuZ2V0RmllbGQgPSBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiBmaWVsZDtcblx0XHR9O1xuXG5cdFx0dGhpcy5zZXRFbmFibGVEZWxldGUgPSBmdW5jdGlvbiggdmFsICkge1xuXHRcdFx0dmFyIGltYWdlID0gJHRoaXMuZmluZCggJy5pbWFnZScgKTtcblx0XHRcdGlmICggIXZhbCApIHtcblx0XHRcdFx0aW1hZ2UucmVtb3ZlQXR0ciggJ2VuYWJsZS1kZWxldGUnICk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGltYWdlLmF0dHIoICdlbmFibGUtZGVsZXRlJywgMSApO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0XHR0aGlzLmdldFZhbHVlID0gZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgZm9ybV9kYXRhO1xuXHRcdFx0aWYgKCBicm93c2VyICYmIGJyb3dzZXIudmFsKCkgKSB7XG5cblx0XHRcdFx0aWYgKCB0eXBlb2YgRm9ybURhdGEgPT0gJ3VuZGVmaW5lZCcgKSB7XG5cdFx0XHRcdFx0Zm9ybV9kYXRhID0gJHRoaXMuZmluZCggJy5icm93c2VyLWZvcm0nICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Zm9ybV9kYXRhID0gbmV3IEZvcm1EYXRhKCAkKCAkdGhpcy5maW5kKCAnLmJyb3dzZXItZm9ybScgKSApWzBdICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRmb3JtX2RhdGEgPSBudWxsO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZm9ybV9kYXRhO1xuXHRcdH07XG5cblx0XHR0aGlzLmdldEltYWdlU3JjID0gZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgaW1hZ2UgPSAkdGhpcy5maW5kKCAnLmltYWdlJyApO1xuXHRcdFx0cmV0dXJuIGltYWdlLmF0dHIoICdzcmMnICk7XG5cdFx0fTtcblxuXHRcdHRoaXMuc2V0SW1hZ2UgPSBmdW5jdGlvbiggdmFsICkge1xuXHRcdFx0dmFyIGltYWdlID0gJHRoaXMuZmluZCggJy5pbWFnZScgKTtcblxuXHRcdFx0aWYgKCAhdmFsICkge1xuXHRcdFx0XHRpbWFnZS5hdHRyKCAnc3JjJywgJycgKTtcblx0XHRcdFx0aW1hZ2UuaGlkZSgpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdHZhciBkID0gbmV3IERhdGUoKTtcblx0XHRcdGltYWdlLmhpZGUoKTtcblx0XHRcdGltYWdlLmF0dHIoICdzcmMnLCB2YWwgKyAnJnQ9JyArIGQuZ2V0VGltZSgpICk7XG5cdFx0XHRpbWFnZS5jc3MoICdoZWlnaHQnLCAnYXV0bycgKTtcblx0XHRcdGltYWdlLmNzcyggJ3dpZHRoJywgJ2F1dG8nICk7XG5cblx0XHR9O1xuXG5cdFx0dmFyIG9uSW1hZ2VMb2FkID0gZnVuY3Rpb24oIGltYWdlICkge1xuXG5cdFx0XHR2YXIgaW1hZ2VfaGVpZ2h0ID0gJCggaW1hZ2UgKS5oZWlnaHQoKSA+IDAgPyAkKCBpbWFnZSApLmhlaWdodCgpIDogaW1hZ2UubmF0dXJhbEhlaWdodDtcblx0XHRcdHZhciBpbWFnZV93aWR0aCA9ICQoIGltYWdlICkud2lkdGgoKSA+IDAgPyAkKCBpbWFnZSApLndpZHRoKCkgOiBpbWFnZS5uYXR1cmFsV2lkdGg7XG5cblx0XHRcdGlmICggaW1hZ2VfaGVpZ2h0ID4gZGVmYXVsdF9oZWlnaHQgKSB7XG5cdFx0XHRcdCQoIGltYWdlICkuY3NzKCAnaGVpZ2h0JywgZGVmYXVsdF9oZWlnaHQgKTtcblxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGltYWdlX3dpZHRoID4gZGVmYXVsdF93aWR0aCApIHtcblx0XHRcdFx0JCggaW1hZ2UgKS5jc3MoICd3aWR0aCcsIGRlZmF1bHRfd2lkdGggKTtcblx0XHRcdFx0JCggaW1hZ2UgKS5jc3MoICdoZWlnaHQnLCAnYXV0bycgKTtcblx0XHRcdH1cblxuXHRcdFx0JHRoaXMudHJpZ2dlciggJ3NldFNpemUnICk7XG5cblx0XHRcdGlmICggaW1hZ2VfaGVpZ2h0IDwgNSApIHtcblx0XHRcdFx0JCggaW1hZ2UgKS5oaWRlKCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQkKCBpbWFnZSApLnNob3coKTtcblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0dGhpcy5zZXRWYWx1ZSA9IGZ1bmN0aW9uKCB2YWwgKSB7XG5cblx0XHRcdGlmICggIXZhbCApIHtcblx0XHRcdFx0dmFsID0gJyc7XG5cdFx0XHR9XG5cblx0XHR9O1xuXG5cdFx0dGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBvID0gJC5tZXRhID8gJC5leHRlbmQoIHt9LCBvcHRzLCAkKCB0aGlzICkuZGF0YSgpICkgOiBvcHRzO1xuXG5cdFx0XHRmaWVsZCA9IG8uZmllbGQ7XG5cblx0XHRcdC8vIHZhciAkdGhpcyA9IHRoaXM7XG5cblx0XHRcdGlmICggby5kZWZhdWx0X3dpZHRoID4gMCApIHtcblx0XHRcdFx0ZGVmYXVsdF93aWR0aCA9IG8uZGVmYXVsdF93aWR0aDtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBvLmRlZmF1bHRfaGVpZ2h0ID4gMCApIHtcblx0XHRcdFx0ZGVmYXVsdF9oZWlnaHQgPSBvLmRlZmF1bHRfaGVpZ2h0O1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIEdsb2JhbC5pc1NldCggby5uYW1lICkgKSB7XG5cdFx0XHRcdG5hbWUgPSBvLm5hbWU7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggR2xvYmFsLmlzU2V0KCBhY2NlcHRfZmlsdGVyICkgKSB7XG5cdFx0XHRcdGFjY2VwdF9maWx0ZXIgPSBvLmFjY2VwdF9maWx0ZXI7XG5cdFx0XHR9XG5cblx0XHRcdGJyb3dzZXIgPSAkKCB0aGlzICkuZmluZCggJy5icm93c2VyJyApO1xuXHRcdFx0dmFyIGltYWdlID0gJCggdGhpcyApLmZpbmQoICcuaW1hZ2UnICk7XG5cdFx0XHRpbWFnZS5oaWRlKCk7XG5cdFx0XHRpbWFnZS5vbiggJ2xvYWQnLCBmdW5jdGlvbigpIHtcblx0XHRcdFx0b25JbWFnZUxvYWQoIHRoaXMgKTtcblxuXHRcdFx0fSApO1xuXG5cdFx0XHRpZiAoIGFjY2VwdF9maWx0ZXIgKSB7XG5cdFx0XHRcdGJyb3dzZXIuYXR0ciggJ2FjY2VwdCcsIGFjY2VwdF9maWx0ZXIgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGFjY2VwdF9maWx0ZXIgPSAnaW1hZ2UvKic7XG5cdFx0XHRcdGJyb3dzZXIuYXR0ciggJ2FjY2VwdCcsICdpbWFnZS8qJyApO1xuXHRcdFx0fVxuXG5cdFx0XHRicm93c2VyLmF0dHIoICdpZCcsIGlkICk7XG5cdFx0XHRicm93c2VyLmF0dHIoICduYW1lJywgbmFtZSApO1xuXG5cdFx0XHRpZiAoIEdsb2JhbC5pc1NldCggby5jaGFuZ2VIYW5kbGVyICkgKSB7XG5cblx0XHRcdFx0JHRoaXMuYmluZCggJ2ltYWdlQ2hhbmdlJywgby5jaGFuZ2VIYW5kbGVyICk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIEdsb2JhbC5pc1NldCggby5kZWxldGVJbWFnZUhhbmRsZXIgKSApIHtcblx0XHRcdFx0dGhpcy5maW5kKCAnLmZpbGUtYnJvd3NlcicgKS5vbiggJ2RlbGV0ZUNsaWNrJywgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0by5kZWxldGVJbWFnZUhhbmRsZXIoKTtcblx0XHRcdFx0fSApO1xuXG5cdFx0XHR9XG5cblx0XHRcdGJyb3dzZXIuYmluZCggJ2NoYW5nZScsIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpbWFnZS5oaWRlKCk7XG5cblx0XHRcdFx0aWYgKCB0eXBlb2YgRmlsZVJlYWRlciAhPSAndW5kZWZpbmVkJyApIHtcblxuXHRcdFx0XHRcdHZhciBmaWxlcyA9ICEhdGhpcy5maWxlcyA/IHRoaXMuZmlsZXMgOiBbXTtcblxuXHRcdFx0XHRcdC8vIElmIG5vIGZpbGVzIHdlcmUgc2VsZWN0ZWQsIG9yIG5vIEZpbGVSZWFkZXIgc3VwcG9ydCwgcmV0dXJuXG5cdFx0XHRcdFx0aWYgKCAhZmlsZXMubGVuZ3RoIHx8ICF3aW5kb3cuRmlsZVJlYWRlciApIHtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAoIGFjY2VwdF9maWx0ZXIgPT09ICdpbWFnZS8qJyApIHtcblx0XHRcdFx0XHRcdC8vIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgRmlsZVJlYWRlclxuXHRcdFx0XHRcdFx0dmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cblx0XHRcdFx0XHRcdC8vIFJlYWQgdGhlIGxvY2FsIGZpbGUgYXMgYSBEYXRhVVJMXG5cdFx0XHRcdFx0XHRyZWFkZXIucmVhZEFzRGF0YVVSTCggZmlsZXNbMF0gKTtcblxuXHRcdFx0XHRcdFx0Ly8gV2hlbiBsb2FkZWQsIHNldCBpbWFnZSBkYXRhIGFzIGJhY2tncm91bmQgb2YgZGl2XG5cdFx0XHRcdFx0XHRyZWFkZXIub25sb2FkZW5kID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdHZhciB1cmwgPSB0aGlzLnJlc3VsdDtcblx0XHRcdFx0XHRcdFx0aW1hZ2UuYXR0ciggJ3NyYycsIHVybCApO1xuXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHR9XG5cblx0XHRcdFx0JHRoaXMudHJpZ2dlciggJ2ltYWdlQ2hhbmdlJywgWyR0aGlzXSApO1xuXG5cdFx0XHR9ICk7XG5cblx0XHR9ICk7XG5cblx0XHRyZXR1cm4gdGhpcztcblxuXHR9O1xuXG5cdCQuZm4uVEltYWdlQnJvd3Nlci5kZWZhdWx0cyA9IHt9O1xuXHQkLmZuLlRJbWFnZUJyb3dzZXIuaHRtbF90ZW1wbGF0ZSA9IGBcblx0PGRpdiBjbGFzcz1cImZpbGUtYnJvd3NlclwiPlxuXHRcdDxpbWcgY2xhc3M9XCJpbWFnZVwiPlxuXHRcdDxmb3JtIGVuY3R5cGU9XCJtdWx0aXBhcnQvZm9ybS1kYXRhXCIgY2xhc3M9XCJicm93c2VyLWZvcm1cIj5cblx0XHRcdDxpbnB1dCBuYW1lPVwiZmlsZWRhdGFcIiBjbGFzcz1cImJyb3dzZXJcIiB0eXBlPVwiZmlsZVwiLz5cblx0XHQ8L2Zvcm0+XG5cdDwvZGl2PlxuXHRgO1xuXG59ICkoIGpRdWVyeSApOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///8326\n")},4164:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"CompanyViewController\": () => (/* binding */ CompanyViewController)\n/* harmony export */ });\n/* harmony import */ var _global_widgets_filebrowser_TImageBrowser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8326);\n/* harmony import */ var _global_widgets_filebrowser_TImageBrowser__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_global_widgets_filebrowser_TImageBrowser__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _global_widgets_filebrowser_TImageAdvBrowser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8243);\n/* harmony import */ var _global_widgets_filebrowser_TImageAdvBrowser__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_global_widgets_filebrowser_TImageAdvBrowser__WEBPACK_IMPORTED_MODULE_1__);\n/* provided dependency */ var _ = __webpack_require__(9050);\n/* provided dependency */ var $ = __webpack_require__(9755);\n\n\n\n\nclass CompanyViewController extends BaseViewController {\n\tconstructor( options = {} ) {\n\t\t_.defaults( options, {\n\t\t\tproduct_edition_array: null,\n\t\t\tindustry_array: null,\n\t\t\tcountry_array: null,\n\t\t\tprovince_array: null,\n\t\t\te_province_array: null,\n\t\t\tterminated_user_disable_login_type_array: null,\n\t\t\tpassword_policy_type_array: null,\n\t\t\tpassword_minimum_permission_level_array: null,\n\t\t\tpassword_minimum_strength_array: null,\n\t\t\tldap_authentication_type_array: null,\n\n\t\t\tfile_browser: null\n\t\t} );\n\n\t\tsuper( options );\n\t}\n\n\tinit( options ) {\n\t\tvar $this = this;\n\n\t\tthis.permission_id = 'company';\n\t\tthis.viewId = 'Company';\n\t\tthis.script_name = 'CompanyView';\n\t\tthis.table_name_key = 'company';\n\t\tthis.context_menu_name = $.i18n._( 'Company Information' );\n\t\tthis.api = TTAPI.APICompany;\n\n\t\tthis.render();\n\t\t// this.buildContextMenu(); // #VueContextMenu#EditOnly - Commented out as must happen after initEditViewUI\n\n\n\t\tthis.initData();\n\t}\n\n\tgetCustomContextMenuModel() {\n\t\tvar context_menu_model = {\n\t\t\texclude: ['default'],\n\t\t\tinclude: [\n\t\t\t\t'save',\n\t\t\t\t'cancel'\n\t\t\t]\n\t\t};\n\n\t\treturn context_menu_model;\n\t}\n\n\tinitOptions( callBack ) {\n\n\t\tvar options = [\n\t\t\t{ option_name: 'product_edition' },\n\t\t\t{ option_name: 'terminated_user_disable_login_type' },\n\t\t\t{ option_name: 'industry' },\n\t\t\t{ option_name: 'country' },\n\t\t\t{ option_name: 'password_policy_type' },\n\t\t\t{ option_name: 'password_minimum_permission_level', field_name: 'password_minimum_permission_level' },\n\t\t\t{ option_name: 'password_minimum_strength', field_name: 'password_minimum_strength' },\n\t\t\t{ option_name: 'ldap_authentication_type' }\n\t\t];\n\n\t\tthis.initDropDownOptions( options, function( result ) {\n\n\t\t\tif ( callBack ) {\n\t\t\t\tcallBack( result ); // First to initialize drop down options, and then to initialize edit view UI.\n\t\t\t}\n\n\t\t} );\n\t}\n\n\tgetCompanyData( callBack ) {\n\t\tvar $this = this;\n\n\t\t// First to get current company's user default data, if no have any data to get the default data which has been set up in TTAPI.APIUserDefault.\n\t\tvar args = { filter_data: { id: LocalCacheData.getLoginUser().company_id } };\n\n\t\t$this.api['get' + $this.api.key_name]( args, {\n\t\t\tonResult: function( result ) {\n\t\t\t\tvar result_data = result.getResult();\n\t\t\t\tif ( Global.isSet( result_data[0] ) ) {\n\t\t\t\t\tcallBack( result_data[0] );\n\t\t\t\t}\n\n\t\t\t}\n\t\t} );\n\t}\n\n\topenEditView() {\n\n\t\tvar $this = this;\n\n\t\tif ( $this.edit_only_mode ) {\n\n\t\t\t$this.initOptions( function( result ) {\n\n\t\t\t\tif ( !$this.edit_view ) {\n\t\t\t\t\t$this.initEditViewUI( 'Company', 'CompanyEditView.html' );\n\t\t\t\t\t$this.buildContextMenu(); // #VueContextMenu#EditOnly - Must happen after initEditViewUI\n\t\t\t\t}\n\n\t\t\t\t$this.getCompanyData( function( result ) {\n\t\t\t\t\t// Waiting for the TTAPI.API returns data to set the current edit record.\n\t\t\t\t\t$this.current_edit_record = result;\n\n\t\t\t\t\t$this.initEditView();\n\n\t\t\t\t} );\n\n\t\t\t} );\n\n\t\t} else {\n\t\t\tif ( !this.edit_view ) {\n\t\t\t\tthis.initEditViewUI( 'Company', 'CompanyEditView.html' );\n\t\t\t}\n\t\t}\n\n\t\tvar new_url = window.location.href;\n\t\tif ( new_url.indexOf( 'company_id' ) == -1 ) {\n\t\t\tnew_url = new_url + '&company_id=' + LocalCacheData.getLoginUser().company_id;\n\t\t\tGlobal.setURLToBrowser( new_url );\n\t\t}\n\t}\n\n\tremoveCompanyIdFromUrl() {\n\t\tvar new_url = window.location.href;\n\t\tif ( new_url.indexOf( 'company_id' ) != -1 ) {\n\t\t\tvar parts = new_url.split( '&' );\n\t\t\tnew_url = parts[0];\n\t\t\tfor ( var i = 1; i < ( parts.length - 1 ); i++ ) {\n\t\t\t\tnew_url += ( '&' + parts[i] );\n\t\t\t}\n\t\t\tGlobal.setURLToBrowser( new_url );\n\t\t}\n\t}\n\n\tremoveEditView() {\n\t\tthis.removeCompanyIdFromUrl();\n\t\tsuper.removeEditView();\n\t}\n\n\tsetCurrentEditRecordData() {\n\t\tfor ( var key in this.current_edit_record ) {\n\t\t\tvar widget = this.edit_view_ui_dic[key];\n\t\t\tif ( Global.isSet( widget ) ) {\n\t\t\t\tswitch ( key ) {\n\t\t\t\t\tcase 'country':\n\t\t\t\t\t\tthis.setCountryValue( widget, key );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\twidget.setValue( this.current_edit_record[key] );\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\n\t\tthis.file_browser.setImage( ServiceCaller.getURLByObjectType( 'company_logo' ) );\n\n\t\tthis.collectUIDataToCurrentEditRecord();\n\n\t\tthis.setEditViewDataDone();\n\t}\n\n\tsetEditViewDataDone() {\n\t\tsuper.setEditViewDataDone();\n\t\tthis.onTypeChange();\n\t}\n\n\tinitSubPasswordPolicyView() {\n\t\tif ( Global.getProductEdition() >= 15 ) {\n\t\t\tthis.edit_view_tab.find( '#tab_password_policy' ).find( '.first-column' ).css( 'display', 'block' );\n\t\t\tthis.edit_view.find( '.permission-defined-div' ).css( 'display', 'none' );\n\t\t\tthis.buildContextMenu( true );\n\t\t\tthis.setEditMenu();\n\t\t} else {\n\t\t\tthis.edit_view_tab.find( '#tab_password_policy' ).find( '.first-column' ).css( 'display', 'none' );\n\t\t\tthis.edit_view.find( '.permission-defined-div' ).css( 'display', 'block' );\n\t\t\tthis.edit_view.find( '.permission-message' ).html( Global.getUpgradeMessage() );\n\t\t}\n\t}\n\n\tsetEditMenuSaveIcon( context_btn, pId ) {\n\t\t//#2542 - Always needs a save icon as this view is always in edit-only mode, ver in view mode\n\t}\n\n\tonFormItemChange( target, doNotValidate ) {\n\n\t\tthis.setIsChanged( target );\n\t\tthis.setMassEditingFieldsWhenFormChange( target );\n\t\tvar key = target.getField();\n\t\tvar c_value = target.getValue();\n\t\tthis.current_edit_record[key] = c_value;\n\n\t\tswitch ( key ) {\n\n\t\t\tcase 'country':\n\t\t\t\tvar widget = this.edit_view_ui_dic['province'];\n\t\t\t\twidget.setValue( null );\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif ( key === 'ldap_authentication_type_id' ) {\n\n\t\t\tthis.onTypeChange();\n\t\t}\n\n\t\tif ( key === 'country' ) {\n\t\t\tthis.onCountryChange();\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !doNotValidate ) {\n\t\t\tthis.validate();\n\t\t}\n\t}\n\n\tonSaveDone( result ) {\n\t\tif ( result.isValid() && result.getResult() === true ) {\n\t\t\tthis.updateCurrentCompanyCache();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tupdateCurrentCompanyCache() {\n\n\t\tvar authentication_api = TTAPI.APIAuthentication;\n\t\tauthentication_api.getCurrentCompany( { onResult: this.onGetCurrentCompany } );\n\t}\n\n\tonGetCurrentCompany( e ) {\n\n\t\tvar result = e.getResult();\n\t\tif ( result.is_setup_complete === '1' || result.is_setup_complete === 1 ) {\n\t\t\tresult.is_setup_complete = true;\n\t\t} else {\n\t\t\tresult.is_setup_complete = false;\n\t\t}\n\n\t\tLocalCacheData.setCurrentCompany( result );\n\t}\n\n\tupdateCompanyLogo() {\n\t\t$( '#rightLogo, #topbar-company-logo' ).css( 'opacity', 0 );\n\t\t$( '#rightLogo, #topbar-company-logo' ).attr( 'src', ServiceCaller.getURLByObjectType( 'company_logo' ) );\n\n\t\t$( '#rightLogo, #topbar-company-logo' ).on( 'load', function() {\n\n\t\t\tvar ratio = 42 / $( this ).height();\n\n\t\t\tif ( $( this ).height() > 42 ) {\n\t\t\t\t$( this ).css( 'height', 42 );\n\n\t\t\t\tif ( $( this ).width > 177 ) {\n\t\t\t\t\t$( this ).css( 'width', 177 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( $( this ).width > 177 ) {\n\t\t\t\t$( this ).css( 'width', 177 );\n\t\t\t}\n\n\t\t\t$( this ).animate( {\n\t\t\t\topacity: 1\n\t\t\t}, 100 );\n\t\t} );\n\t}\n\n\tsetErrorMenu() {\n\n\t\tvar context_menu_array = ContextMenuManager.getMenuModelByMenuId( this.determineContextMenuMountAttributes().id );\n\t\tvar len = context_menu_array.length;\n\n\t\tfor ( var i = 0; i < len; i++ ) {\n\t\t\tlet context_btn = context_menu_array[i];\n\t\t\tlet id = context_menu_array[i].id;\n\t\t\tContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, true );\n\n\t\t\tswitch ( id ) {\n\t\t\t\tcase 'cancel':\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t}\n\t}\n\n\tsetProvince( val, m ) {\n\t\tvar $this = this;\n\n\t\tif ( !val || val === '-1' || val === '0' ) {\n\t\t\t$this.province_array = [];\n\n\t\t} else {\n\n\t\t\tthis.api.getOptions( 'province', val, {\n\t\t\t\tonResult: function( res ) {\n\t\t\t\t\tres = res.getResult();\n\t\t\t\t\tif ( !res ) {\n\t\t\t\t\t\tres = [];\n\t\t\t\t\t}\n\n\t\t\t\t\t$this.province_array = Global.buildRecordArray( res );\n\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t}\n\n\teSetProvince( val, refresh ) {\n\t\tvar $this = this;\n\t\tvar province_widget = $this.edit_view_ui_dic['province'];\n\n\t\tif ( !val || val === '-1' || val === '0' ) {\n\t\t\t$this.e_province_array = [];\n\t\t\tprovince_widget.setSourceData( [] );\n\t\t} else {\n\t\t\tthis.api.getOptions( 'province', val, {\n\t\t\t\tonResult: function( res ) {\n\t\t\t\t\tres = res.getResult();\n\t\t\t\t\tif ( !res ) {\n\t\t\t\t\t\tres = [];\n\t\t\t\t\t}\n\n\t\t\t\t\t$this.e_province_array = Global.buildRecordArray( res );\n\t\t\t\t\tif ( refresh && $this.e_province_array.length > 0 ) {\n\t\t\t\t\t\t$this.current_edit_record.province = $this.e_province_array[0].value;\n\t\t\t\t\t\tprovince_widget.setValue( $this.current_edit_record.province );\n\t\t\t\t\t}\n\n\t\t\t\t\tprovince_widget.setSourceData( $this.e_province_array );\n\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t}\n\n\tbuildEditViewUI() {\n\t\tvar $this = this;\n\t\tsuper.buildEditViewUI();\n\n\t\tvar tab_model = {\n\t\t\t'tab_company': { 'label': $.i18n._( 'Company' ), 'is_multi_column': true },\n\t\t\t'tab_password_policy': {\n\t\t\t\t'label': $.i18n._( 'Password Policy' ),\n\t\t\t\t'init_callback': 'initSubPasswordPolicyView',\n\t\t\t\t'html_template': this.getCompanyPasswordPolicyTabHtml(),\n\t\t\t},\n\t\t\t'tab_ldap': {\n\t\t\t\t'label': $.i18n._( 'LDAP Authentication' )\n\t\t\t},\n\t\t\t'tab_audit': true,\n\t\t};\n\t\tthis.setTabModel( tab_model );\n\n\t\t//Tab 0 start\n\n\t\tvar tab_company = this.edit_view_tab.find( '#tab_company' );\n\n\t\tvar tab_company_column1 = tab_company.find( '.first-column' );\n\t\tvar tab_company_column2 = tab_company.find( '.second-column' );\n\n\t\tvar form_item_input;\n\t\tvar widgetContainer;\n\t\tvar label;\n\n\t\tthis.edit_view_tabs[0] = [];\n\n\t\tthis.edit_view_tabs[0].push( tab_company_column1 );\n\t\tthis.edit_view_tabs[0].push( tab_company_column2 );\n\n\t\t// Product Edition\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\tform_item_input.TComboBox( { field: 'product_edition_id' } );\n\t\tform_item_input.setSourceData( $this.product_edition_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Product Edition' ), form_item_input, tab_company_column1, '' );\n\n\t\t// Full Name\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'name', width: '100%' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Full Name' ), form_item_input, tab_company_column1 );\n\t\tform_item_input.parent().width( '45%' );\n\n\t\t// Short Name\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'short_name', width: 128 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Short Name' ), form_item_input, tab_company_column1 );\n\n\t\t// Industry\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\tform_item_input.TComboBox( { field: 'industry_id' } );\n\t\tform_item_input.setSourceData( $this.industry_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Industry' ), form_item_input, tab_company_column1 );\n\n\t\t// Business/Employer ID Number\n//\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n//\t\tform_item_input.TTextInput( {field: 'business_number', width: 149} );\n//\t\tthis.addEditFieldToColumn( $.i18n._( 'Business/Employer ID Number' ), form_item_input, tab_company_column1 );\n\n\t\t// Address (Line 1)\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'address1', width: '100%' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Address (Line 1)' ), form_item_input, tab_company_column1 );\n\t\tform_item_input.parent().width( '45%' );\n\n\t\t// Address (Line 2)\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'address2', width: '100%' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Address (Line 2)' ), form_item_input, tab_company_column1 );\n\t\tform_item_input.parent().width( '45%' );\n\n\t\t//City\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'city', width: 149 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'City' ), form_item_input, tab_company_column1 );\n\n\t\t//Country\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\tform_item_input.TComboBox( { field: 'country', set_empty: true } );\n\t\tform_item_input.setSourceData( $this.country_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Country' ), form_item_input, tab_company_column1 );\n\n\t\t//Province / State\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\tform_item_input.TComboBox( { field: 'province' } );\n\t\tform_item_input.setSourceData( [] );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Province/State' ), form_item_input, tab_company_column1 );\n\n\t\t//City\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'postal_code', width: 149 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Postal/ZIP Code' ), form_item_input, tab_company_column1, '' );\n\n\t\t// Phone\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'work_phone', width: 149 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Phone' ), form_item_input, tab_company_column2, '' );\n\n\t\t// Fax\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'fax_phone', width: 149 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Fax' ), form_item_input, tab_company_column2 );\n\n\t\t// Administrative Contact\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tapi_class: TTAPI.APIUser,\n\t\t\tallow_multiple_selection: false,\n\t\t\tlayout_name: 'global_user',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_empty: true,\n\t\t\tfield: 'admin_contact'\n\t\t} );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Administrative Contact' ), form_item_input, tab_company_column2 );\n\n\t\t// billing contact\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tapi_class: TTAPI.APIUser,\n\t\t\tallow_multiple_selection: false,\n\t\t\tlayout_name: 'global_user',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_empty: true,\n\t\t\tfield: 'billing_contact'\n\t\t} );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Billing Contact' ), form_item_input, tab_company_column2 );\n\n\t\t// Primary Support contact\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tapi_class: TTAPI.APIUser,\n\t\t\tallow_multiple_selection: false,\n\t\t\tlayout_name: 'global_user',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_empty: true,\n\t\t\tfield: 'support_contact'\n\t\t} );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Primary Support Contact' ), form_item_input, tab_company_column2 );\n\n\t\t// Company Settings\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.SEPARATED_BOX );\n\t\tform_item_input.SeparatedBox( { label: $.i18n._( 'Company Settings' ) } );\n\t\tthis.addEditFieldToColumn( null, form_item_input, tab_company_column2 );\n\n\t\t// Terminated User Disable Login Type\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\tform_item_input.TComboBox( { field: 'terminated_user_disable_login_type_id' } );\n\t\tform_item_input.setSourceData( $this.terminated_user_disable_login_type_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Disable Terminated Employees' ), form_item_input, tab_company_column2, '' );\n\n\t\t// Terminated User Disable Login After Days\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'terminated_user_disable_login_after_days', width: 25 } );\n\n\t\tvar terminated_user_disable_login_after_days_description = $( '<div class=\\'widget-h-box\\'></div>' );\n\t\tterminated_user_disable_login_after_days_description.append( form_item_input );\n\t\tterminated_user_disable_login_after_days_description.append( $( '<span class=\\'widget-right-label\\'>( ' + $.i18n._( 'Days' ) + ' )</span>' ) );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Disable Terminated Employees Login After' ), form_item_input, tab_company_column2, '', terminated_user_disable_login_after_days_description );\n\n\t\t// Logo\n\n\t\tif ( typeof FormData == 'undefined' ) {\n\t\t\tform_item_input = Global.loadWidgetByName( FormItemType.IMAGE_BROWSER );\n\n\t\t\tthis.file_browser = form_item_input.TImageBrowser( { field: '', default_width: 128, default_height: 128 } );\n\n\t\t\tthis.file_browser.bind( 'imageChange', function( e, target ) {\n\t\t\t\tnew ServiceCaller().uploadFile( target.getValue(), 'object_type=company_logo', {\n\t\t\t\t\tonResult: function( result ) {\n\n\t\t\t\t\t\tif ( result.toLowerCase() === 'true' ) {\n\t\t\t\t\t\t\t$this.file_browser.setImage( ServiceCaller.getURLByObjectType( 'company_logo' ) );\n\t\t\t\t\t\t\t$this.updateCompanyLogo();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tTAlertManager.showAlert( result, 'Error' );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t} );\n\t\t} else {\n\t\t\tform_item_input = Global.loadWidgetByName( FormItemType.IMAGE_AVD_BROWSER );\n\n\t\t\tthis.file_browser = form_item_input.TImageAdvBrowser( {\n\t\t\t\tfield: '', callBack: function( form_data ) {\n\t\t\t\t\tnew ServiceCaller().uploadFile( form_data, 'object_type=company_logo', {\n\t\t\t\t\t\tonResult: function( result ) {\n\n\t\t\t\t\t\t\tif ( result.toLowerCase() === 'true' ) {\n\t\t\t\t\t\t\t\t$this.file_browser.setImage( ServiceCaller.getURLByObjectType( 'company_logo' ) );\n\t\t\t\t\t\t\t\t$this.updateCompanyLogo();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tTAlertManager.showAlert( result, 'Error' );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\tif ( this.is_edit || this.edit_only_mode ) {\n\t\t\tthis.file_browser.setEnableDelete( true );\n\t\t\tthis.file_browser.bind( 'deleteClick', function( e, target ) {\n\t\t\t\t$this.api.deleteImage( $this.current_edit_record.id, {\n\t\t\t\t\tonResult: function( result ) {\n\t\t\t\t\t\t$this.initEditView( result );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\t}\n\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Logo' ), this.file_browser, tab_company_column2, '', null, false, true );\n\n\t\t// // Enable Second Surname\n\t\t// form_item_input = Global.loadWidgetByName( FormItemType.CHECKBOX );\n\t\t// form_item_input.TCheckbox( {field: 'enable_second_last_name'} );\n\t\t// this.addEditFieldToColumn( $.i18n._( 'Enable Second Surname' ), form_item_input, tab_company_column2, '' );\n\n\t\t//Tab 1 start\n\n\t\tvar tab_password_policy = this.edit_view_tab.find( '#tab_password_policy' );\n\n\t\tvar tab_password_policy_column1 = tab_password_policy.find( '.first-column' );\n\n\t\tthis.edit_view_tabs[1] = [];\n\n\t\tthis.edit_view_tabs[1].push( tab_password_policy_column1 );\n\n\t\t// Password Policy\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\n\t\tform_item_input.TComboBox( { field: 'password_policy_type_id' } );\n\t\tform_item_input.setSourceData( $this.password_policy_type_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Password Policy' ), form_item_input, tab_password_policy_column1, '' );\n\n\t\t// Minimum Permission Level\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\n\t\tform_item_input.TComboBox( { field: 'password_minimum_permission_level' } );\n\t\tform_item_input.setSourceData( $this.password_minimum_permission_level_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Minimum Permission Level' ), form_item_input, tab_password_policy_column1 );\n\n\t\t// Minimum Strength\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\n\t\tform_item_input.TComboBox( { field: 'password_minimum_strength' } );\n\t\tform_item_input.setSourceData( $this.password_minimum_strength_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Minimum Strength' ), form_item_input, tab_password_policy_column1 );\n\n\t\t// Minimum Length\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\n\t\tform_item_input.TTextInput( { field: 'password_minimum_length', width: 30 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Minimum Length' ), form_item_input, tab_password_policy_column1 );\n\n\t\t// Minimum Age\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'password_minimum_age', width: 30 } );\n\n\t\twidgetContainer = $( '<div class=\\'widget-h-box\\'></div>' );\n\t\tlabel = $( '<span class=\\'widget-right-label\\'> ' + $.i18n._( 'in Days' ) + '</span>' );\n\n\t\twidgetContainer.append( form_item_input );\n\t\twidgetContainer.append( label );\n\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Minimum Age' ), form_item_input, tab_password_policy_column1, '', widgetContainer );\n\n\t\t// Maximum Age\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'password_maximum_age', width: 30 } );\n\n\t\twidgetContainer = $( '<div class=\\'widget-h-box\\'></div>' );\n\t\tlabel = $( '<span class=\\'widget-right-label\\'> ' + $.i18n._( 'in Days' ) + '</span>' );\n\n\t\twidgetContainer.append( form_item_input );\n\t\twidgetContainer.append( label );\n\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Maximum Age' ), form_item_input, tab_password_policy_column1, '', widgetContainer );\n\n\t\t//Tab 1 start\n\n\t\tvar tab_ldap = this.edit_view_tab.find( '#tab_ldap' );\n\n\t\tvar tab_ldap_column1 = tab_ldap.find( '.first-column' );\n\n\t\tthis.edit_view_tabs[2] = [];\n\n\t\tthis.edit_view_tabs[2].push( tab_ldap_column1 );\n\n\t\t//\n\t\t// LDAP Authentication\n\t\t//\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\n\t\tform_item_input.TComboBox( { field: 'ldap_authentication_type_id' } );\n\t\tform_item_input.setSourceData( $this.ldap_authentication_type_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'LDAP Authentication' ), form_item_input, tab_ldap_column1 );\n\n\t\t// Server\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\n\t\tform_item_input.TTextInput( { field: 'ldap_host', width: 240 } );\n\t\twidgetContainer = $( '<div class=\\'widget-h-box\\'></div>' );\n\t\tlabel = $( '<span class=\\'widget-right-label\\'> ' + $.i18n._( '(ie: ldap.example.com or ldaps://ldap.example.com for SSL)' ) + '</span>' );\n\n\t\twidgetContainer.append( form_item_input );\n\t\twidgetContainer.append( label );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Server' ), form_item_input, tab_ldap_column1, '', widgetContainer, true );\n\n\t\t// Port\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\n\t\tform_item_input.TTextInput( { field: 'ldap_port', width: 50 } );\n\t\twidgetContainer = $( '<div class=\\'widget-h-box\\'></div>' );\n\t\tlabel = $( '<span class=\\'widget-right-label\\'> ' + $.i18n._( '(ie: 389 or 636 for SSL)' ) + '</span>' );\n\n\t\twidgetContainer.append( form_item_input );\n\t\twidgetContainer.append( label );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Port' ), form_item_input, tab_ldap_column1, '', widgetContainer, true );\n\n\t\t// Bind User Name\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\n\t\tform_item_input.TTextInput( { field: 'ldap_bind_user_name' } );\n\t\twidgetContainer = $( '<div class=\\'widget-h-box\\'></div>' );\n\t\tlabel = $( '<span class=\\'widget-right-label\\'> ' + $.i18n._( 'Used to search for the user, for anonymous binding enter: anonymous' ) + '</span>' );\n\n\t\twidgetContainer.append( form_item_input );\n\t\twidgetContainer.append( label );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Bind User Name' ), form_item_input, tab_ldap_column1, '', widgetContainer, true );\n\n\t\t// Bind Password\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\n\t\tform_item_input.TTextInput( { field: 'ldap_bind_password' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Bind Password' ), form_item_input, tab_ldap_column1, '', null, true );\n\n\t\t// Base DN\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\n\t\tform_item_input.TTextInput( { field: 'ldap_base_dn', width: 300 } );\n\t\twidgetContainer = $( '<div class=\\'widget-h-box\\'></div>' );\n\t\tlabel = $( '<span class=\\'widget-right-label\\'> ' + $.i18n._( '(ie: ou=People,dc=example,dc=com)' ) + '</span>' );\n\n\t\twidgetContainer.append( form_item_input );\n\t\twidgetContainer.append( label );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Base DN' ), form_item_input, tab_ldap_column1, '', widgetContainer, true );\n\n\t\t// Bind Attribute\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\n\t\tform_item_input.TTextInput( { field: 'ldap_bind_attribute', width: 150 } );\n\t\twidgetContainer = $( '<div class=\\'widget-h-box\\'></div>' );\n\t\tlabel = $( '<span class=\\'widget-right-label\\'> ' + $.i18n._( 'For binding the LDAP user. (ie: AD/openLDAP: userPrincipalName, Mac OSX: uid)' ) + '</span>' );\n\n\t\twidgetContainer.append( form_item_input );\n\t\twidgetContainer.append( label );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Bind Attribute' ), form_item_input, tab_ldap_column1, '', widgetContainer, true );\n\n\t\t// User Filter\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\n\t\tform_item_input.TTextInput( { field: 'ldap_user_filter', width: 150 } );\n\t\twidgetContainer = $( '<div class=\\'widget-h-box\\'></div>' );\n\t\tlabel = $( '<span class=\\'widget-right-label\\'> ' + $.i18n._( 'Additional filter parameters. (ie: is_timetrex_user=1)' ) + '</span>' );\n\n\t\twidgetContainer.append( form_item_input );\n\t\twidgetContainer.append( label );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'User Filter' ), form_item_input, tab_ldap_column1, '', widgetContainer, true );\n\n\t\t// Login Attribute\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\n\t\tform_item_input.TTextInput( { field: 'ldap_login_attribute', width: 150 } );\n\t\twidgetContainer = $( '<div class=\\'widget-h-box\\'></div>' );\n\t\tlabel = $( '<span class=\\'widget-right-label\\'> ' + $.i18n._( 'For searching the LDAP user. (ie: AD: sAMAccountName, openLDAP: dn, Mac OSX: dn)' ) + '</span>' );\n\n\t\twidgetContainer.append( form_item_input );\n\t\twidgetContainer.append( label );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Login Attribute' ), form_item_input, tab_ldap_column1, '', widgetContainer, true );\n\t}\n\n\tonTypeChange() {\n\t\tif ( this.current_edit_record.ldap_authentication_type_id == 0 ) {\n\t\t\tthis.detachElement( 'ldap_host' );\n\t\t\tthis.detachElement( 'ldap_port' );\n\t\t\tthis.detachElement( 'ldap_bind_user_name' );\n\t\t\tthis.detachElement( 'ldap_bind_password' );\n\t\t\tthis.detachElement( 'ldap_base_dn' );\n\t\t\tthis.detachElement( 'ldap_bind_attribute' );\n\t\t\tthis.detachElement( 'ldap_user_filter' );\n\t\t\tthis.detachElement( 'ldap_login_attribute' );\n\n\t\t} else {\n\t\t\tthis.attachElement( 'ldap_host' );\n\t\t\tthis.attachElement( 'ldap_port' );\n\t\t\tthis.attachElement( 'ldap_bind_user_name' );\n\t\t\tthis.attachElement( 'ldap_bind_password' );\n\t\t\tthis.attachElement( 'ldap_base_dn' );\n\t\t\tthis.attachElement( 'ldap_bind_attribute' );\n\t\t\tthis.attachElement( 'ldap_user_filter' );\n\t\t\tthis.attachElement( 'ldap_login_attribute' );\n\t\t}\n\n\t\tthis.editFieldResize();\n\t}\n\n\tgetCompanyPasswordPolicyTabHtml() {\n\t\treturn `<div id=\"tab_password_policy\" class=\"edit-view-tab-outside\">\n\t\t\t\t\t<div class=\"edit-view-tab\" id=\"tab_password_policy_content_div\">\n\t\t\t\t\t\t<div class=\"first-column full-width-column\"></div>\n\t\t\t\t\t\t<div class=\"save-and-continue-div permission-defined-div\">\n\t\t\t\t\t\t\t<span class=\"message permission-message\"></span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>`;\n\t}\n\n}\n\n//\n//CompanyViewController.loadView = function() {\n//\n//\t Global.loadViewSource( 'Company', 'CompanyView.html', function( result ) {\n//\n//\t\t var args = {};\n//\t\t var template = _.template( result, args );\n//\n//\t\t Global.contentContainer().html( template );\n//\t } )\n//\n//};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFFOUI7QUFDQTs7QUFFQSxnQ0FBZ0MsMkNBQTJDO0FBQzNFLG9CQUFvQixDQUFDO0FBQ3JCLFVBQVUsQ0FBQywyQ0FBMkMsQ0FBQzs7QUFFdkQ7QUFDQTtBQUNBLDZCQUE2QixDQUFDOztBQUU5QjtBQUNBOztBQUVBLGdDQUFnQyx3Q0FBd0M7QUFDeEUsb0JBQW9CLENBQUM7QUFDckIsVUFBVSxDQUFDLDJDQUEyQyxDQUFDOztBQUV2RDtBQUNBO0FBQ0EsNkJBQTZCLENBQUM7O0FBRTlCO0FBQ0E7O0FBRUEsZ0NBQWdDLDRDQUE0QztBQUM1RSxvQkFBb0IsQ0FBQztBQUNyQixVQUFVLENBQUMsMkNBQTJDLENBQUM7O0FBRXZEO0FBQ0E7QUFDQSw2QkFBNkIsQ0FBQztBQUM5Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9pbnRlcmZhY2UvaHRtbDUvdmlld3MvY29tcGFueS9jb21wYW55L0NvbXBhbnlWaWV3Q29udHJvbGxlci5qcz81NGVlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnQC9nbG9iYWwvd2lkZ2V0cy9maWxlYnJvd3Nlci9USW1hZ2VCcm93c2VyJztcbmltcG9ydCAnQC9nbG9iYWwvd2lkZ2V0cy9maWxlYnJvd3Nlci9USW1hZ2VBZHZCcm93c2VyJztcblxuXG5leHBvcnQgY2xhc3MgQ29tcGFueVZpZXdDb250cm9sbGVyIGV4dGVuZHMgQmFzZVZpZXdDb250cm9sbGVyIHtcblx0Y29uc3RydWN0b3IoIG9wdGlvbnMgPSB7fSApIHtcblx0XHRfLmRlZmF1bHRzKCBvcHRpb25zLCB7XG5cdFx0XHRwcm9kdWN0X2VkaXRpb25fYXJyYXk6IG51bGwsXG5cdFx0XHRpbmR1c3RyeV9hcnJheTogbnVsbCxcblx0XHRcdGNvdW50cnlfYXJyYXk6IG51bGwsXG5cdFx0XHRwcm92aW5jZV9hcnJheTogbnVsbCxcblx0XHRcdGVfcHJvdmluY2VfYXJyYXk6IG51bGwsXG5cdFx0XHR0ZXJtaW5hdGVkX3VzZXJfZGlzYWJsZV9sb2dpbl90eXBlX2FycmF5OiBudWxsLFxuXHRcdFx0cGFzc3dvcmRfcG9saWN5X3R5cGVfYXJyYXk6IG51bGwsXG5cdFx0XHRwYXNzd29yZF9taW5pbXVtX3Blcm1pc3Npb25fbGV2ZWxfYXJyYXk6IG51bGwsXG5cdFx0XHRwYXNzd29yZF9taW5pbXVtX3N0cmVuZ3RoX2FycmF5OiBudWxsLFxuXHRcdFx0bGRhcF9hdXRoZW50aWNhdGlvbl90eXBlX2FycmF5OiBudWxsLFxuXG5cdFx0XHRmaWxlX2Jyb3dzZXI6IG51bGxcblx0XHR9ICk7XG5cblx0XHRzdXBlciggb3B0aW9ucyApO1xuXHR9XG5cblx0aW5pdCggb3B0aW9ucyApIHtcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXG5cdFx0dGhpcy5wZXJtaXNzaW9uX2lkID0gJ2NvbXBhbnknO1xuXHRcdHRoaXMudmlld0lkID0gJ0NvbXBhbnknO1xuXHRcdHRoaXMuc2NyaXB0X25hbWUgPSAnQ29tcGFueVZpZXcnO1xuXHRcdHRoaXMudGFibGVfbmFtZV9rZXkgPSAnY29tcGFueSc7XG5cdFx0dGhpcy5jb250ZXh0X21lbnVfbmFtZSA9ICQuaTE4bi5fKCAnQ29tcGFueSBJbmZvcm1hdGlvbicgKTtcblx0XHR0aGlzLmFwaSA9IFRUQVBJLkFQSUNvbXBhbnk7XG5cblx0XHR0aGlzLnJlbmRlcigpO1xuXHRcdC8vIHRoaXMuYnVpbGRDb250ZXh0TWVudSgpOyAvLyAjVnVlQ29udGV4dE1lbnUjRWRpdE9ubHkgLSBDb21tZW50ZWQgb3V0IGFzIG11c3QgaGFwcGVuIGFmdGVyIGluaXRFZGl0Vmlld1VJXG5cblxuXHRcdHRoaXMuaW5pdERhdGEoKTtcblx0fVxuXG5cdGdldEN1c3RvbUNvbnRleHRNZW51TW9kZWwoKSB7XG5cdFx0dmFyIGNvbnRleHRfbWVudV9tb2RlbCA9IHtcblx0XHRcdGV4Y2x1ZGU6IFsnZGVmYXVsdCddLFxuXHRcdFx0aW5jbHVkZTogW1xuXHRcdFx0XHQnc2F2ZScsXG5cdFx0XHRcdCdjYW5jZWwnXG5cdFx0XHRdXG5cdFx0fTtcblxuXHRcdHJldHVybiBjb250ZXh0X21lbnVfbW9kZWw7XG5cdH1cblxuXHRpbml0T3B0aW9ucyggY2FsbEJhY2sgKSB7XG5cblx0XHR2YXIgb3B0aW9ucyA9IFtcblx0XHRcdHsgb3B0aW9uX25hbWU6ICdwcm9kdWN0X2VkaXRpb24nIH0sXG5cdFx0XHR7IG9wdGlvbl9uYW1lOiAndGVybWluYXRlZF91c2VyX2Rpc2FibGVfbG9naW5fdHlwZScgfSxcblx0XHRcdHsgb3B0aW9uX25hbWU6ICdpbmR1c3RyeScgfSxcblx0XHRcdHsgb3B0aW9uX25hbWU6ICdjb3VudHJ5JyB9LFxuXHRcdFx0eyBvcHRpb25fbmFtZTogJ3Bhc3N3b3JkX3BvbGljeV90eXBlJyB9LFxuXHRcdFx0eyBvcHRpb25fbmFtZTogJ3Bhc3N3b3JkX21pbmltdW1fcGVybWlzc2lvbl9sZXZlbCcsIGZpZWxkX25hbWU6ICdwYXNzd29yZF9taW5pbXVtX3Blcm1pc3Npb25fbGV2ZWwnIH0sXG5cdFx0XHR7IG9wdGlvbl9uYW1lOiAncGFzc3dvcmRfbWluaW11bV9zdHJlbmd0aCcsIGZpZWxkX25hbWU6ICdwYXNzd29yZF9taW5pbXVtX3N0cmVuZ3RoJyB9LFxuXHRcdFx0eyBvcHRpb25fbmFtZTogJ2xkYXBfYXV0aGVudGljYXRpb25fdHlwZScgfVxuXHRcdF07XG5cblx0XHR0aGlzLmluaXREcm9wRG93bk9wdGlvbnMoIG9wdGlvbnMsIGZ1bmN0aW9uKCByZXN1bHQgKSB7XG5cblx0XHRcdGlmICggY2FsbEJhY2sgKSB7XG5cdFx0XHRcdGNhbGxCYWNrKCByZXN1bHQgKTsgLy8gRmlyc3QgdG8gaW5pdGlhbGl6ZSBkcm9wIGRvd24gb3B0aW9ucywgYW5kIHRoZW4gdG8gaW5pdGlhbGl6ZSBlZGl0IHZpZXcgVUkuXG5cdFx0XHR9XG5cblx0XHR9ICk7XG5cdH1cblxuXHRnZXRDb21wYW55RGF0YSggY2FsbEJhY2sgKSB7XG5cdFx0dmFyICR0aGlzID0gdGhpcztcblxuXHRcdC8vIEZpcnN0IHRvIGdldCBjdXJyZW50IGNvbXBhbnkncyB1c2VyIGRlZmF1bHQgZGF0YSwgaWYgbm8gaGF2ZSBhbnkgZGF0YSB0byBnZXQgdGhlIGRlZmF1bHQgZGF0YSB3aGljaCBoYXMgYmVlbiBzZXQgdXAgaW4gVFRBUEkuQVBJVXNlckRlZmF1bHQuXG5cdFx0dmFyIGFyZ3MgPSB7IGZpbHRlcl9kYXRhOiB7IGlkOiBMb2NhbENhY2hlRGF0YS5nZXRMb2dpblVzZXIoKS5jb21wYW55X2lkIH0gfTtcblxuXHRcdCR0aGlzLmFwaVsnZ2V0JyArICR0aGlzLmFwaS5rZXlfbmFtZV0oIGFyZ3MsIHtcblx0XHRcdG9uUmVzdWx0OiBmdW5jdGlvbiggcmVzdWx0ICkge1xuXHRcdFx0XHR2YXIgcmVzdWx0X2RhdGEgPSByZXN1bHQuZ2V0UmVzdWx0KCk7XG5cdFx0XHRcdGlmICggR2xvYmFsLmlzU2V0KCByZXN1bHRfZGF0YVswXSApICkge1xuXHRcdFx0XHRcdGNhbGxCYWNrKCByZXN1bHRfZGF0YVswXSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdH1cblx0XHR9ICk7XG5cdH1cblxuXHRvcGVuRWRpdFZpZXcoKSB7XG5cblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXG5cdFx0aWYgKCAkdGhpcy5lZGl0X29ubHlfbW9kZSApIHtcblxuXHRcdFx0JHRoaXMuaW5pdE9wdGlvbnMoIGZ1bmN0aW9uKCByZXN1bHQgKSB7XG5cblx0XHRcdFx0aWYgKCAhJHRoaXMuZWRpdF92aWV3ICkge1xuXHRcdFx0XHRcdCR0aGlzLmluaXRFZGl0Vmlld1VJKCAnQ29tcGFueScsICdDb21wYW55RWRpdFZpZXcuaHRtbCcgKTtcblx0XHRcdFx0XHQkdGhpcy5idWlsZENvbnRleHRNZW51KCk7IC8vICNWdWVDb250ZXh0TWVudSNFZGl0T25seSAtIE11c3QgaGFwcGVuIGFmdGVyIGluaXRFZGl0Vmlld1VJXG5cdFx0XHRcdH1cblxuXHRcdFx0XHQkdGhpcy5nZXRDb21wYW55RGF0YSggZnVuY3Rpb24oIHJlc3VsdCApIHtcblx0XHRcdFx0XHQvLyBXYWl0aW5nIGZvciB0aGUgVFRBUEkuQVBJIHJldHVybnMgZGF0YSB0byBzZXQgdGhlIGN1cnJlbnQgZWRpdCByZWNvcmQuXG5cdFx0XHRcdFx0JHRoaXMuY3VycmVudF9lZGl0X3JlY29yZCA9IHJlc3VsdDtcblxuXHRcdFx0XHRcdCR0aGlzLmluaXRFZGl0VmlldygpO1xuXG5cdFx0XHRcdH0gKTtcblxuXHRcdFx0fSApO1xuXG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmICggIXRoaXMuZWRpdF92aWV3ICkge1xuXHRcdFx0XHR0aGlzLmluaXRFZGl0Vmlld1VJKCAnQ29tcGFueScsICdDb21wYW55RWRpdFZpZXcuaHRtbCcgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHR2YXIgbmV3X3VybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuXHRcdGlmICggbmV3X3VybC5pbmRleE9mKCAnY29tcGFueV9pZCcgKSA9PSAtMSApIHtcblx0XHRcdG5ld191cmwgPSBuZXdfdXJsICsgJyZjb21wYW55X2lkPScgKyBMb2NhbENhY2hlRGF0YS5nZXRMb2dpblVzZXIoKS5jb21wYW55X2lkO1xuXHRcdFx0R2xvYmFsLnNldFVSTFRvQnJvd3NlciggbmV3X3VybCApO1xuXHRcdH1cblx0fVxuXG5cdHJlbW92ZUNvbXBhbnlJZEZyb21VcmwoKSB7XG5cdFx0dmFyIG5ld191cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcblx0XHRpZiAoIG5ld191cmwuaW5kZXhPZiggJ2NvbXBhbnlfaWQnICkgIT0gLTEgKSB7XG5cdFx0XHR2YXIgcGFydHMgPSBuZXdfdXJsLnNwbGl0KCAnJicgKTtcblx0XHRcdG5ld191cmwgPSBwYXJ0c1swXTtcblx0XHRcdGZvciAoIHZhciBpID0gMTsgaSA8ICggcGFydHMubGVuZ3RoIC0gMSApOyBpKysgKSB7XG5cdFx0XHRcdG5ld191cmwgKz0gKCAnJicgKyBwYXJ0c1tpXSApO1xuXHRcdFx0fVxuXHRcdFx0R2xvYmFsLnNldFVSTFRvQnJvd3NlciggbmV3X3VybCApO1xuXHRcdH1cblx0fVxuXG5cdHJlbW92ZUVkaXRWaWV3KCkge1xuXHRcdHRoaXMucmVtb3ZlQ29tcGFueUlkRnJvbVVybCgpO1xuXHRcdHN1cGVyLnJlbW92ZUVkaXRWaWV3KCk7XG5cdH1cblxuXHRzZXRDdXJyZW50RWRpdFJlY29yZERhdGEoKSB7XG5cdFx0Zm9yICggdmFyIGtleSBpbiB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQgKSB7XG5cdFx0XHR2YXIgd2lkZ2V0ID0gdGhpcy5lZGl0X3ZpZXdfdWlfZGljW2tleV07XG5cdFx0XHRpZiAoIEdsb2JhbC5pc1NldCggd2lkZ2V0ICkgKSB7XG5cdFx0XHRcdHN3aXRjaCAoIGtleSApIHtcblx0XHRcdFx0XHRjYXNlICdjb3VudHJ5Jzpcblx0XHRcdFx0XHRcdHRoaXMuc2V0Q291bnRyeVZhbHVlKCB3aWRnZXQsIGtleSApO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdHdpZGdldC5zZXRWYWx1ZSggdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkW2tleV0gKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cblx0XHRcdH1cblx0XHR9XG5cblx0XHR0aGlzLmZpbGVfYnJvd3Nlci5zZXRJbWFnZSggU2VydmljZUNhbGxlci5nZXRVUkxCeU9iamVjdFR5cGUoICdjb21wYW55X2xvZ28nICkgKTtcblxuXHRcdHRoaXMuY29sbGVjdFVJRGF0YVRvQ3VycmVudEVkaXRSZWNvcmQoKTtcblxuXHRcdHRoaXMuc2V0RWRpdFZpZXdEYXRhRG9uZSgpO1xuXHR9XG5cblx0c2V0RWRpdFZpZXdEYXRhRG9uZSgpIHtcblx0XHRzdXBlci5zZXRFZGl0Vmlld0RhdGFEb25lKCk7XG5cdFx0dGhpcy5vblR5cGVDaGFuZ2UoKTtcblx0fVxuXG5cdGluaXRTdWJQYXNzd29yZFBvbGljeVZpZXcoKSB7XG5cdFx0aWYgKCBHbG9iYWwuZ2V0UHJvZHVjdEVkaXRpb24oKSA+PSAxNSApIHtcblx0XHRcdHRoaXMuZWRpdF92aWV3X3RhYi5maW5kKCAnI3RhYl9wYXNzd29yZF9wb2xpY3knICkuZmluZCggJy5maXJzdC1jb2x1bW4nICkuY3NzKCAnZGlzcGxheScsICdibG9jaycgKTtcblx0XHRcdHRoaXMuZWRpdF92aWV3LmZpbmQoICcucGVybWlzc2lvbi1kZWZpbmVkLWRpdicgKS5jc3MoICdkaXNwbGF5JywgJ25vbmUnICk7XG5cdFx0XHR0aGlzLmJ1aWxkQ29udGV4dE1lbnUoIHRydWUgKTtcblx0XHRcdHRoaXMuc2V0RWRpdE1lbnUoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5lZGl0X3ZpZXdfdGFiLmZpbmQoICcjdGFiX3Bhc3N3b3JkX3BvbGljeScgKS5maW5kKCAnLmZpcnN0LWNvbHVtbicgKS5jc3MoICdkaXNwbGF5JywgJ25vbmUnICk7XG5cdFx0XHR0aGlzLmVkaXRfdmlldy5maW5kKCAnLnBlcm1pc3Npb24tZGVmaW5lZC1kaXYnICkuY3NzKCAnZGlzcGxheScsICdibG9jaycgKTtcblx0XHRcdHRoaXMuZWRpdF92aWV3LmZpbmQoICcucGVybWlzc2lvbi1tZXNzYWdlJyApLmh0bWwoIEdsb2JhbC5nZXRVcGdyYWRlTWVzc2FnZSgpICk7XG5cdFx0fVxuXHR9XG5cblx0c2V0RWRpdE1lbnVTYXZlSWNvbiggY29udGV4dF9idG4sIHBJZCApIHtcblx0XHQvLyMyNTQyIC0gQWx3YXlzIG5lZWRzIGEgc2F2ZSBpY29uIGFzIHRoaXMgdmlldyBpcyBhbHdheXMgaW4gZWRpdC1vbmx5IG1vZGUsIHZlciBpbiB2aWV3IG1vZGVcblx0fVxuXG5cdG9uRm9ybUl0ZW1DaGFuZ2UoIHRhcmdldCwgZG9Ob3RWYWxpZGF0ZSApIHtcblxuXHRcdHRoaXMuc2V0SXNDaGFuZ2VkKCB0YXJnZXQgKTtcblx0XHR0aGlzLnNldE1hc3NFZGl0aW5nRmllbGRzV2hlbkZvcm1DaGFuZ2UoIHRhcmdldCApO1xuXHRcdHZhciBrZXkgPSB0YXJnZXQuZ2V0RmllbGQoKTtcblx0XHR2YXIgY192YWx1ZSA9IHRhcmdldC5nZXRWYWx1ZSgpO1xuXHRcdHRoaXMuY3VycmVudF9lZGl0X3JlY29yZFtrZXldID0gY192YWx1ZTtcblxuXHRcdHN3aXRjaCAoIGtleSApIHtcblxuXHRcdFx0Y2FzZSAnY291bnRyeSc6XG5cdFx0XHRcdHZhciB3aWRnZXQgPSB0aGlzLmVkaXRfdmlld191aV9kaWNbJ3Byb3ZpbmNlJ107XG5cdFx0XHRcdHdpZGdldC5zZXRWYWx1ZSggbnVsbCApO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cblx0XHRpZiAoIGtleSA9PT0gJ2xkYXBfYXV0aGVudGljYXRpb25fdHlwZV9pZCcgKSB7XG5cblx0XHRcdHRoaXMub25UeXBlQ2hhbmdlKCk7XG5cdFx0fVxuXG5cdFx0aWYgKCBrZXkgPT09ICdjb3VudHJ5JyApIHtcblx0XHRcdHRoaXMub25Db3VudHJ5Q2hhbmdlKCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCAhZG9Ob3RWYWxpZGF0ZSApIHtcblx0XHRcdHRoaXMudmFsaWRhdGUoKTtcblx0XHR9XG5cdH1cblxuXHRvblNhdmVEb25lKCByZXN1bHQgKSB7XG5cdFx0aWYgKCByZXN1bHQuaXNWYWxpZCgpICYmIHJlc3VsdC5nZXRSZXN1bHQoKSA9PT0gdHJ1ZSApIHtcblx0XHRcdHRoaXMudXBkYXRlQ3VycmVudENvbXBhbnlDYWNoZSgpO1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHVwZGF0ZUN1cnJlbnRDb21wYW55Q2FjaGUoKSB7XG5cblx0XHR2YXIgYXV0aGVudGljYXRpb25fYXBpID0gVFRBUEkuQVBJQXV0aGVudGljYXRpb247XG5cdFx0YXV0aGVudGljYXRpb25fYXBpLmdldEN1cnJlbnRDb21wYW55KCB7IG9uUmVzdWx0OiB0aGlzLm9uR2V0Q3VycmVudENvbXBhbnkgfSApO1xuXHR9XG5cblx0b25HZXRDdXJyZW50Q29tcGFueSggZSApIHtcblxuXHRcdHZhciByZXN1bHQgPSBlLmdldFJlc3VsdCgpO1xuXHRcdGlmICggcmVzdWx0LmlzX3NldHVwX2NvbXBsZXRlID09PSAnMScgfHwgcmVzdWx0LmlzX3NldHVwX2NvbXBsZXRlID09PSAxICkge1xuXHRcdFx0cmVzdWx0LmlzX3NldHVwX2NvbXBsZXRlID0gdHJ1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmVzdWx0LmlzX3NldHVwX2NvbXBsZXRlID0gZmFsc2U7XG5cdFx0fVxuXG5cdFx0TG9jYWxDYWNoZURhdGEuc2V0Q3VycmVudENvbXBhbnkoIHJlc3VsdCApO1xuXHR9XG5cblx0dXBkYXRlQ29tcGFueUxvZ28oKSB7XG5cdFx0JCggJyNyaWdodExvZ28sICN0b3BiYXItY29tcGFueS1sb2dvJyApLmNzcyggJ29wYWNpdHknLCAwICk7XG5cdFx0JCggJyNyaWdodExvZ28sICN0b3BiYXItY29tcGFueS1sb2dvJyApLmF0dHIoICdzcmMnLCBTZXJ2aWNlQ2FsbGVyLmdldFVSTEJ5T2JqZWN0VHlwZSggJ2NvbXBhbnlfbG9nbycgKSApO1xuXG5cdFx0JCggJyNyaWdodExvZ28sICN0b3BiYXItY29tcGFueS1sb2dvJyApLm9uKCAnbG9hZCcsIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHR2YXIgcmF0aW8gPSA0MiAvICQoIHRoaXMgKS5oZWlnaHQoKTtcblxuXHRcdFx0aWYgKCAkKCB0aGlzICkuaGVpZ2h0KCkgPiA0MiApIHtcblx0XHRcdFx0JCggdGhpcyApLmNzcyggJ2hlaWdodCcsIDQyICk7XG5cblx0XHRcdFx0aWYgKCAkKCB0aGlzICkud2lkdGggPiAxNzcgKSB7XG5cdFx0XHRcdFx0JCggdGhpcyApLmNzcyggJ3dpZHRoJywgMTc3ICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKCAkKCB0aGlzICkud2lkdGggPiAxNzcgKSB7XG5cdFx0XHRcdCQoIHRoaXMgKS5jc3MoICd3aWR0aCcsIDE3NyApO1xuXHRcdFx0fVxuXG5cdFx0XHQkKCB0aGlzICkuYW5pbWF0ZSgge1xuXHRcdFx0XHRvcGFjaXR5OiAxXG5cdFx0XHR9LCAxMDAgKTtcblx0XHR9ICk7XG5cdH1cblxuXHRzZXRFcnJvck1lbnUoKSB7XG5cblx0XHR2YXIgY29udGV4dF9tZW51X2FycmF5ID0gQ29udGV4dE1lbnVNYW5hZ2VyLmdldE1lbnVNb2RlbEJ5TWVudUlkKCB0aGlzLmRldGVybWluZUNvbnRleHRNZW51TW91bnRBdHRyaWJ1dGVzKCkuaWQgKTtcblx0XHR2YXIgbGVuID0gY29udGV4dF9tZW51X2FycmF5Lmxlbmd0aDtcblxuXHRcdGZvciAoIHZhciBpID0gMDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0bGV0IGNvbnRleHRfYnRuID0gY29udGV4dF9tZW51X2FycmF5W2ldO1xuXHRcdFx0bGV0IGlkID0gY29udGV4dF9tZW51X2FycmF5W2ldLmlkO1xuXHRcdFx0Q29udGV4dE1lbnVNYW5hZ2VyLmRpc2FibGVNZW51SXRlbSggdGhpcy5kZXRlcm1pbmVDb250ZXh0TWVudU1vdW50QXR0cmlidXRlcygpLmlkLCBjb250ZXh0X2J0bi5pZCwgdHJ1ZSApO1xuXG5cdFx0XHRzd2l0Y2ggKCBpZCApIHtcblx0XHRcdFx0Y2FzZSAnY2FuY2VsJzpcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRDb250ZXh0TWVudU1hbmFnZXIuZGlzYWJsZU1lbnVJdGVtKCB0aGlzLmRldGVybWluZUNvbnRleHRNZW51TW91bnRBdHRyaWJ1dGVzKCkuaWQsIGNvbnRleHRfYnRuLmlkLCBmYWxzZSApO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXG5cdFx0fVxuXHR9XG5cblx0c2V0UHJvdmluY2UoIHZhbCwgbSApIHtcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXG5cdFx0aWYgKCAhdmFsIHx8IHZhbCA9PT0gJy0xJyB8fCB2YWwgPT09ICcwJyApIHtcblx0XHRcdCR0aGlzLnByb3ZpbmNlX2FycmF5ID0gW107XG5cblx0XHR9IGVsc2Uge1xuXG5cdFx0XHR0aGlzLmFwaS5nZXRPcHRpb25zKCAncHJvdmluY2UnLCB2YWwsIHtcblx0XHRcdFx0b25SZXN1bHQ6IGZ1bmN0aW9uKCByZXMgKSB7XG5cdFx0XHRcdFx0cmVzID0gcmVzLmdldFJlc3VsdCgpO1xuXHRcdFx0XHRcdGlmICggIXJlcyApIHtcblx0XHRcdFx0XHRcdHJlcyA9IFtdO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdCR0aGlzLnByb3ZpbmNlX2FycmF5ID0gR2xvYmFsLmJ1aWxkUmVjb3JkQXJyYXkoIHJlcyApO1xuXG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0XHR9XG5cdH1cblxuXHRlU2V0UHJvdmluY2UoIHZhbCwgcmVmcmVzaCApIHtcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdHZhciBwcm92aW5jZV93aWRnZXQgPSAkdGhpcy5lZGl0X3ZpZXdfdWlfZGljWydwcm92aW5jZSddO1xuXG5cdFx0aWYgKCAhdmFsIHx8IHZhbCA9PT0gJy0xJyB8fCB2YWwgPT09ICcwJyApIHtcblx0XHRcdCR0aGlzLmVfcHJvdmluY2VfYXJyYXkgPSBbXTtcblx0XHRcdHByb3ZpbmNlX3dpZGdldC5zZXRTb3VyY2VEYXRhKCBbXSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmFwaS5nZXRPcHRpb25zKCAncHJvdmluY2UnLCB2YWwsIHtcblx0XHRcdFx0b25SZXN1bHQ6IGZ1bmN0aW9uKCByZXMgKSB7XG5cdFx0XHRcdFx0cmVzID0gcmVzLmdldFJlc3VsdCgpO1xuXHRcdFx0XHRcdGlmICggIXJlcyApIHtcblx0XHRcdFx0XHRcdHJlcyA9IFtdO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdCR0aGlzLmVfcHJvdmluY2VfYXJyYXkgPSBHbG9iYWwuYnVpbGRSZWNvcmRBcnJheSggcmVzICk7XG5cdFx0XHRcdFx0aWYgKCByZWZyZXNoICYmICR0aGlzLmVfcHJvdmluY2VfYXJyYXkubGVuZ3RoID4gMCApIHtcblx0XHRcdFx0XHRcdCR0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQucHJvdmluY2UgPSAkdGhpcy5lX3Byb3ZpbmNlX2FycmF5WzBdLnZhbHVlO1xuXHRcdFx0XHRcdFx0cHJvdmluY2Vfd2lkZ2V0LnNldFZhbHVlKCAkdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLnByb3ZpbmNlICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cHJvdmluY2Vfd2lkZ2V0LnNldFNvdXJjZURhdGEoICR0aGlzLmVfcHJvdmluY2VfYXJyYXkgKTtcblxuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cdFx0fVxuXHR9XG5cblx0YnVpbGRFZGl0Vmlld1VJKCkge1xuXHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0c3VwZXIuYnVpbGRFZGl0Vmlld1VJKCk7XG5cblx0XHR2YXIgdGFiX21vZGVsID0ge1xuXHRcdFx0J3RhYl9jb21wYW55JzogeyAnbGFiZWwnOiAkLmkxOG4uXyggJ0NvbXBhbnknICksICdpc19tdWx0aV9jb2x1bW4nOiB0cnVlIH0sXG5cdFx0XHQndGFiX3Bhc3N3b3JkX3BvbGljeSc6IHtcblx0XHRcdFx0J2xhYmVsJzogJC5pMThuLl8oICdQYXNzd29yZCBQb2xpY3knICksXG5cdFx0XHRcdCdpbml0X2NhbGxiYWNrJzogJ2luaXRTdWJQYXNzd29yZFBvbGljeVZpZXcnLFxuXHRcdFx0XHQnaHRtbF90ZW1wbGF0ZSc6IHRoaXMuZ2V0Q29tcGFueVBhc3N3b3JkUG9saWN5VGFiSHRtbCgpLFxuXHRcdFx0fSxcblx0XHRcdCd0YWJfbGRhcCc6IHtcblx0XHRcdFx0J2xhYmVsJzogJC5pMThuLl8oICdMREFQIEF1dGhlbnRpY2F0aW9uJyApXG5cdFx0XHR9LFxuXHRcdFx0J3RhYl9hdWRpdCc6IHRydWUsXG5cdFx0fTtcblx0XHR0aGlzLnNldFRhYk1vZGVsKCB0YWJfbW9kZWwgKTtcblxuXHRcdC8vVGFiIDAgc3RhcnRcblxuXHRcdHZhciB0YWJfY29tcGFueSA9IHRoaXMuZWRpdF92aWV3X3RhYi5maW5kKCAnI3RhYl9jb21wYW55JyApO1xuXG5cdFx0dmFyIHRhYl9jb21wYW55X2NvbHVtbjEgPSB0YWJfY29tcGFueS5maW5kKCAnLmZpcnN0LWNvbHVtbicgKTtcblx0XHR2YXIgdGFiX2NvbXBhbnlfY29sdW1uMiA9IHRhYl9jb21wYW55LmZpbmQoICcuc2Vjb25kLWNvbHVtbicgKTtcblxuXHRcdHZhciBmb3JtX2l0ZW1faW5wdXQ7XG5cdFx0dmFyIHdpZGdldENvbnRhaW5lcjtcblx0XHR2YXIgbGFiZWw7XG5cblx0XHR0aGlzLmVkaXRfdmlld190YWJzWzBdID0gW107XG5cblx0XHR0aGlzLmVkaXRfdmlld190YWJzWzBdLnB1c2goIHRhYl9jb21wYW55X2NvbHVtbjEgKTtcblx0XHR0aGlzLmVkaXRfdmlld190YWJzWzBdLnB1c2goIHRhYl9jb21wYW55X2NvbHVtbjIgKTtcblxuXHRcdC8vIFByb2R1Y3QgRWRpdGlvblxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQ09NQk9fQk9YICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LlRDb21ib0JveCggeyBmaWVsZDogJ3Byb2R1Y3RfZWRpdGlvbl9pZCcgfSApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5zZXRTb3VyY2VEYXRhKCAkdGhpcy5wcm9kdWN0X2VkaXRpb25fYXJyYXkgKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ1Byb2R1Y3QgRWRpdGlvbicgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfY29tcGFueV9jb2x1bW4xLCAnJyApO1xuXG5cdFx0Ly8gRnVsbCBOYW1lXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5URVhUX0lOUFVUICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LlRUZXh0SW5wdXQoIHsgZmllbGQ6ICduYW1lJywgd2lkdGg6ICcxMDAlJyB9ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdGdWxsIE5hbWUnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2NvbXBhbnlfY29sdW1uMSApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5wYXJlbnQoKS53aWR0aCggJzQ1JScgKTtcblxuXHRcdC8vIFNob3J0IE5hbWVcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ3Nob3J0X25hbWUnLCB3aWR0aDogMTI4IH0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ1Nob3J0IE5hbWUnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2NvbXBhbnlfY29sdW1uMSApO1xuXG5cdFx0Ly8gSW5kdXN0cnlcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkNPTUJPX0JPWCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UQ29tYm9Cb3goIHsgZmllbGQ6ICdpbmR1c3RyeV9pZCcgfSApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5zZXRTb3VyY2VEYXRhKCAkdGhpcy5pbmR1c3RyeV9hcnJheSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnSW5kdXN0cnknICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2NvbXBhbnlfY29sdW1uMSApO1xuXG5cdFx0Ly8gQnVzaW5lc3MvRW1wbG95ZXIgSUQgTnVtYmVyXG4vL1x0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcbi8vXHRcdGZvcm1faXRlbV9pbnB1dC5UVGV4dElucHV0KCB7ZmllbGQ6ICdidXNpbmVzc19udW1iZXInLCB3aWR0aDogMTQ5fSApO1xuLy9cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdCdXNpbmVzcy9FbXBsb3llciBJRCBOdW1iZXInICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2NvbXBhbnlfY29sdW1uMSApO1xuXG5cdFx0Ly8gQWRkcmVzcyAoTGluZSAxKVxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuVEVYVF9JTlBVVCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UVGV4dElucHV0KCB7IGZpZWxkOiAnYWRkcmVzczEnLCB3aWR0aDogJzEwMCUnIH0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0FkZHJlc3MgKExpbmUgMSknICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2NvbXBhbnlfY29sdW1uMSApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5wYXJlbnQoKS53aWR0aCggJzQ1JScgKTtcblxuXHRcdC8vIEFkZHJlc3MgKExpbmUgMilcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ2FkZHJlc3MyJywgd2lkdGg6ICcxMDAlJyB9ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdBZGRyZXNzIChMaW5lIDIpJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9jb21wYW55X2NvbHVtbjEgKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQucGFyZW50KCkud2lkdGgoICc0NSUnICk7XG5cblx0XHQvL0NpdHlcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ2NpdHknLCB3aWR0aDogMTQ5IH0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0NpdHknICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2NvbXBhbnlfY29sdW1uMSApO1xuXG5cdFx0Ly9Db3VudHJ5XG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5DT01CT19CT1ggKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVENvbWJvQm94KCB7IGZpZWxkOiAnY291bnRyeScsIHNldF9lbXB0eTogdHJ1ZSB9ICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LnNldFNvdXJjZURhdGEoICR0aGlzLmNvdW50cnlfYXJyYXkgKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0NvdW50cnknICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2NvbXBhbnlfY29sdW1uMSApO1xuXG5cdFx0Ly9Qcm92aW5jZSAvIFN0YXRlXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5DT01CT19CT1ggKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVENvbWJvQm94KCB7IGZpZWxkOiAncHJvdmluY2UnIH0gKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuc2V0U291cmNlRGF0YSggW10gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ1Byb3ZpbmNlL1N0YXRlJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9jb21wYW55X2NvbHVtbjEgKTtcblxuXHRcdC8vQ2l0eVxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuVEVYVF9JTlBVVCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UVGV4dElucHV0KCB7IGZpZWxkOiAncG9zdGFsX2NvZGUnLCB3aWR0aDogMTQ5IH0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ1Bvc3RhbC9aSVAgQ29kZScgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfY29tcGFueV9jb2x1bW4xLCAnJyApO1xuXG5cdFx0Ly8gUGhvbmVcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ3dvcmtfcGhvbmUnLCB3aWR0aDogMTQ5IH0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ1Bob25lJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9jb21wYW55X2NvbHVtbjIsICcnICk7XG5cblx0XHQvLyBGYXhcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ2ZheF9waG9uZScsIHdpZHRoOiAxNDkgfSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnRmF4JyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9jb21wYW55X2NvbHVtbjIgKTtcblxuXHRcdC8vIEFkbWluaXN0cmF0aXZlIENvbnRhY3Rcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LkFDb21ib0JveCgge1xuXHRcdFx0YXBpX2NsYXNzOiBUVEFQSS5BUElVc2VyLFxuXHRcdFx0YWxsb3dfbXVsdGlwbGVfc2VsZWN0aW9uOiBmYWxzZSxcblx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX3VzZXInLFxuXHRcdFx0c2hvd19zZWFyY2hfaW5wdXRzOiB0cnVlLFxuXHRcdFx0c2V0X2VtcHR5OiB0cnVlLFxuXHRcdFx0ZmllbGQ6ICdhZG1pbl9jb250YWN0J1xuXHRcdH0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0FkbWluaXN0cmF0aXZlIENvbnRhY3QnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2NvbXBhbnlfY29sdW1uMiApO1xuXG5cdFx0Ly8gYmlsbGluZyBjb250YWN0XG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5BQ29tYm9Cb3goIHtcblx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJVXNlcixcblx0XHRcdGFsbG93X211bHRpcGxlX3NlbGVjdGlvbjogZmFsc2UsXG5cdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF91c2VyJyxcblx0XHRcdHNob3dfc2VhcmNoX2lucHV0czogdHJ1ZSxcblx0XHRcdHNldF9lbXB0eTogdHJ1ZSxcblx0XHRcdGZpZWxkOiAnYmlsbGluZ19jb250YWN0J1xuXHRcdH0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0JpbGxpbmcgQ29udGFjdCcgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfY29tcGFueV9jb2x1bW4yICk7XG5cblx0XHQvLyBQcmltYXJ5IFN1cHBvcnQgY29udGFjdFxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1ggKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuQUNvbWJvQm94KCB7XG5cdFx0XHRhcGlfY2xhc3M6IFRUQVBJLkFQSVVzZXIsXG5cdFx0XHRhbGxvd19tdWx0aXBsZV9zZWxlY3Rpb246IGZhbHNlLFxuXHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfdXNlcicsXG5cdFx0XHRzaG93X3NlYXJjaF9pbnB1dHM6IHRydWUsXG5cdFx0XHRzZXRfZW1wdHk6IHRydWUsXG5cdFx0XHRmaWVsZDogJ3N1cHBvcnRfY29udGFjdCdcblx0XHR9ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdQcmltYXJ5IFN1cHBvcnQgQ29udGFjdCcgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfY29tcGFueV9jb2x1bW4yICk7XG5cblx0XHQvLyBDb21wYW55IFNldHRpbmdzXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5TRVBBUkFURURfQk9YICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LlNlcGFyYXRlZEJveCggeyBsYWJlbDogJC5pMThuLl8oICdDb21wYW55IFNldHRpbmdzJyApIH0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCBudWxsLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9jb21wYW55X2NvbHVtbjIgKTtcblxuXHRcdC8vIFRlcm1pbmF0ZWQgVXNlciBEaXNhYmxlIExvZ2luIFR5cGVcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkNPTUJPX0JPWCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UQ29tYm9Cb3goIHsgZmllbGQ6ICd0ZXJtaW5hdGVkX3VzZXJfZGlzYWJsZV9sb2dpbl90eXBlX2lkJyB9ICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LnNldFNvdXJjZURhdGEoICR0aGlzLnRlcm1pbmF0ZWRfdXNlcl9kaXNhYmxlX2xvZ2luX3R5cGVfYXJyYXkgKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0Rpc2FibGUgVGVybWluYXRlZCBFbXBsb3llZXMnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2NvbXBhbnlfY29sdW1uMiwgJycgKTtcblxuXHRcdC8vIFRlcm1pbmF0ZWQgVXNlciBEaXNhYmxlIExvZ2luIEFmdGVyIERheXNcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ3Rlcm1pbmF0ZWRfdXNlcl9kaXNhYmxlX2xvZ2luX2FmdGVyX2RheXMnLCB3aWR0aDogMjUgfSApO1xuXG5cdFx0dmFyIHRlcm1pbmF0ZWRfdXNlcl9kaXNhYmxlX2xvZ2luX2FmdGVyX2RheXNfZGVzY3JpcHRpb24gPSAkKCAnPGRpdiBjbGFzcz1cXCd3aWRnZXQtaC1ib3hcXCc+PC9kaXY+JyApO1xuXHRcdHRlcm1pbmF0ZWRfdXNlcl9kaXNhYmxlX2xvZ2luX2FmdGVyX2RheXNfZGVzY3JpcHRpb24uYXBwZW5kKCBmb3JtX2l0ZW1faW5wdXQgKTtcblx0XHR0ZXJtaW5hdGVkX3VzZXJfZGlzYWJsZV9sb2dpbl9hZnRlcl9kYXlzX2Rlc2NyaXB0aW9uLmFwcGVuZCggJCggJzxzcGFuIGNsYXNzPVxcJ3dpZGdldC1yaWdodC1sYWJlbFxcJz4oICcgKyAkLmkxOG4uXyggJ0RheXMnICkgKyAnICk8L3NwYW4+JyApICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdEaXNhYmxlIFRlcm1pbmF0ZWQgRW1wbG95ZWVzIExvZ2luIEFmdGVyJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9jb21wYW55X2NvbHVtbjIsICcnLCB0ZXJtaW5hdGVkX3VzZXJfZGlzYWJsZV9sb2dpbl9hZnRlcl9kYXlzX2Rlc2NyaXB0aW9uICk7XG5cblx0XHQvLyBMb2dvXG5cblx0XHRpZiAoIHR5cGVvZiBGb3JtRGF0YSA9PSAndW5kZWZpbmVkJyApIHtcblx0XHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuSU1BR0VfQlJPV1NFUiApO1xuXG5cdFx0XHR0aGlzLmZpbGVfYnJvd3NlciA9IGZvcm1faXRlbV9pbnB1dC5USW1hZ2VCcm93c2VyKCB7IGZpZWxkOiAnJywgZGVmYXVsdF93aWR0aDogMTI4LCBkZWZhdWx0X2hlaWdodDogMTI4IH0gKTtcblxuXHRcdFx0dGhpcy5maWxlX2Jyb3dzZXIuYmluZCggJ2ltYWdlQ2hhbmdlJywgZnVuY3Rpb24oIGUsIHRhcmdldCApIHtcblx0XHRcdFx0bmV3IFNlcnZpY2VDYWxsZXIoKS51cGxvYWRGaWxlKCB0YXJnZXQuZ2V0VmFsdWUoKSwgJ29iamVjdF90eXBlPWNvbXBhbnlfbG9nbycsIHtcblx0XHRcdFx0XHRvblJlc3VsdDogZnVuY3Rpb24oIHJlc3VsdCApIHtcblxuXHRcdFx0XHRcdFx0aWYgKCByZXN1bHQudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnICkge1xuXHRcdFx0XHRcdFx0XHQkdGhpcy5maWxlX2Jyb3dzZXIuc2V0SW1hZ2UoIFNlcnZpY2VDYWxsZXIuZ2V0VVJMQnlPYmplY3RUeXBlKCAnY29tcGFueV9sb2dvJyApICk7XG5cdFx0XHRcdFx0XHRcdCR0aGlzLnVwZGF0ZUNvbXBhbnlMb2dvKCk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRUQWxlcnRNYW5hZ2VyLnNob3dBbGVydCggcmVzdWx0LCAnRXJyb3InICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9ICk7XG5cblx0XHRcdH0gKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5JTUFHRV9BVkRfQlJPV1NFUiApO1xuXG5cdFx0XHR0aGlzLmZpbGVfYnJvd3NlciA9IGZvcm1faXRlbV9pbnB1dC5USW1hZ2VBZHZCcm93c2VyKCB7XG5cdFx0XHRcdGZpZWxkOiAnJywgY2FsbEJhY2s6IGZ1bmN0aW9uKCBmb3JtX2RhdGEgKSB7XG5cdFx0XHRcdFx0bmV3IFNlcnZpY2VDYWxsZXIoKS51cGxvYWRGaWxlKCBmb3JtX2RhdGEsICdvYmplY3RfdHlwZT1jb21wYW55X2xvZ28nLCB7XG5cdFx0XHRcdFx0XHRvblJlc3VsdDogZnVuY3Rpb24oIHJlc3VsdCApIHtcblxuXHRcdFx0XHRcdFx0XHRpZiAoIHJlc3VsdC50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZScgKSB7XG5cdFx0XHRcdFx0XHRcdFx0JHRoaXMuZmlsZV9icm93c2VyLnNldEltYWdlKCBTZXJ2aWNlQ2FsbGVyLmdldFVSTEJ5T2JqZWN0VHlwZSggJ2NvbXBhbnlfbG9nbycgKSApO1xuXHRcdFx0XHRcdFx0XHRcdCR0aGlzLnVwZGF0ZUNvbXBhbnlMb2dvKCk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0VEFsZXJ0TWFuYWdlci5zaG93QWxlcnQoIHJlc3VsdCwgJ0Vycm9yJyApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSApO1xuXG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHRpZiAoIHRoaXMuaXNfZWRpdCB8fCB0aGlzLmVkaXRfb25seV9tb2RlICkge1xuXHRcdFx0dGhpcy5maWxlX2Jyb3dzZXIuc2V0RW5hYmxlRGVsZXRlKCB0cnVlICk7XG5cdFx0XHR0aGlzLmZpbGVfYnJvd3Nlci5iaW5kKCAnZGVsZXRlQ2xpY2snLCBmdW5jdGlvbiggZSwgdGFyZ2V0ICkge1xuXHRcdFx0XHQkdGhpcy5hcGkuZGVsZXRlSW1hZ2UoICR0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQuaWQsIHtcblx0XHRcdFx0XHRvblJlc3VsdDogZnVuY3Rpb24oIHJlc3VsdCApIHtcblx0XHRcdFx0XHRcdCR0aGlzLmluaXRFZGl0VmlldyggcmVzdWx0ICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9ICk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdMb2dvJyApLCB0aGlzLmZpbGVfYnJvd3NlciwgdGFiX2NvbXBhbnlfY29sdW1uMiwgJycsIG51bGwsIGZhbHNlLCB0cnVlICk7XG5cblx0XHQvLyAvLyBFbmFibGUgU2Vjb25kIFN1cm5hbWVcblx0XHQvLyBmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkNIRUNLQk9YICk7XG5cdFx0Ly8gZm9ybV9pdGVtX2lucHV0LlRDaGVja2JveCgge2ZpZWxkOiAnZW5hYmxlX3NlY29uZF9sYXN0X25hbWUnfSApO1xuXHRcdC8vIHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnRW5hYmxlIFNlY29uZCBTdXJuYW1lJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9jb21wYW55X2NvbHVtbjIsICcnICk7XG5cblx0XHQvL1RhYiAxIHN0YXJ0XG5cblx0XHR2YXIgdGFiX3Bhc3N3b3JkX3BvbGljeSA9IHRoaXMuZWRpdF92aWV3X3RhYi5maW5kKCAnI3RhYl9wYXNzd29yZF9wb2xpY3knICk7XG5cblx0XHR2YXIgdGFiX3Bhc3N3b3JkX3BvbGljeV9jb2x1bW4xID0gdGFiX3Bhc3N3b3JkX3BvbGljeS5maW5kKCAnLmZpcnN0LWNvbHVtbicgKTtcblxuXHRcdHRoaXMuZWRpdF92aWV3X3RhYnNbMV0gPSBbXTtcblxuXHRcdHRoaXMuZWRpdF92aWV3X3RhYnNbMV0ucHVzaCggdGFiX3Bhc3N3b3JkX3BvbGljeV9jb2x1bW4xICk7XG5cblx0XHQvLyBQYXNzd29yZCBQb2xpY3lcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkNPTUJPX0JPWCApO1xuXG5cdFx0Zm9ybV9pdGVtX2lucHV0LlRDb21ib0JveCggeyBmaWVsZDogJ3Bhc3N3b3JkX3BvbGljeV90eXBlX2lkJyB9ICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LnNldFNvdXJjZURhdGEoICR0aGlzLnBhc3N3b3JkX3BvbGljeV90eXBlX2FycmF5ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdQYXNzd29yZCBQb2xpY3knICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX3Bhc3N3b3JkX3BvbGljeV9jb2x1bW4xLCAnJyApO1xuXG5cdFx0Ly8gTWluaW11bSBQZXJtaXNzaW9uIExldmVsXG5cblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkNPTUJPX0JPWCApO1xuXG5cdFx0Zm9ybV9pdGVtX2lucHV0LlRDb21ib0JveCggeyBmaWVsZDogJ3Bhc3N3b3JkX21pbmltdW1fcGVybWlzc2lvbl9sZXZlbCcgfSApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5zZXRTb3VyY2VEYXRhKCAkdGhpcy5wYXNzd29yZF9taW5pbXVtX3Blcm1pc3Npb25fbGV2ZWxfYXJyYXkgKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ01pbmltdW0gUGVybWlzc2lvbiBMZXZlbCcgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcGFzc3dvcmRfcG9saWN5X2NvbHVtbjEgKTtcblxuXHRcdC8vIE1pbmltdW0gU3RyZW5ndGhcblxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQ09NQk9fQk9YICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQuVENvbWJvQm94KCB7IGZpZWxkOiAncGFzc3dvcmRfbWluaW11bV9zdHJlbmd0aCcgfSApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5zZXRTb3VyY2VEYXRhKCAkdGhpcy5wYXNzd29yZF9taW5pbXVtX3N0cmVuZ3RoX2FycmF5ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdNaW5pbXVtIFN0cmVuZ3RoJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9wYXNzd29yZF9wb2xpY3lfY29sdW1uMSApO1xuXG5cdFx0Ly8gTWluaW11bSBMZW5ndGhcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblxuXHRcdGZvcm1faXRlbV9pbnB1dC5UVGV4dElucHV0KCB7IGZpZWxkOiAncGFzc3dvcmRfbWluaW11bV9sZW5ndGgnLCB3aWR0aDogMzAgfSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnTWluaW11bSBMZW5ndGgnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX3Bhc3N3b3JkX3BvbGljeV9jb2x1bW4xICk7XG5cblx0XHQvLyBNaW5pbXVtIEFnZVxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuVEVYVF9JTlBVVCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UVGV4dElucHV0KCB7IGZpZWxkOiAncGFzc3dvcmRfbWluaW11bV9hZ2UnLCB3aWR0aDogMzAgfSApO1xuXG5cdFx0d2lkZ2V0Q29udGFpbmVyID0gJCggJzxkaXYgY2xhc3M9XFwnd2lkZ2V0LWgtYm94XFwnPjwvZGl2PicgKTtcblx0XHRsYWJlbCA9ICQoICc8c3BhbiBjbGFzcz1cXCd3aWRnZXQtcmlnaHQtbGFiZWxcXCc+ICcgKyAkLmkxOG4uXyggJ2luIERheXMnICkgKyAnPC9zcGFuPicgKTtcblxuXHRcdHdpZGdldENvbnRhaW5lci5hcHBlbmQoIGZvcm1faXRlbV9pbnB1dCApO1xuXHRcdHdpZGdldENvbnRhaW5lci5hcHBlbmQoIGxhYmVsICk7XG5cblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ01pbmltdW0gQWdlJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9wYXNzd29yZF9wb2xpY3lfY29sdW1uMSwgJycsIHdpZGdldENvbnRhaW5lciApO1xuXG5cdFx0Ly8gTWF4aW11bSBBZ2VcblxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuVEVYVF9JTlBVVCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UVGV4dElucHV0KCB7IGZpZWxkOiAncGFzc3dvcmRfbWF4aW11bV9hZ2UnLCB3aWR0aDogMzAgfSApO1xuXG5cdFx0d2lkZ2V0Q29udGFpbmVyID0gJCggJzxkaXYgY2xhc3M9XFwnd2lkZ2V0LWgtYm94XFwnPjwvZGl2PicgKTtcblx0XHRsYWJlbCA9ICQoICc8c3BhbiBjbGFzcz1cXCd3aWRnZXQtcmlnaHQtbGFiZWxcXCc+ICcgKyAkLmkxOG4uXyggJ2luIERheXMnICkgKyAnPC9zcGFuPicgKTtcblxuXHRcdHdpZGdldENvbnRhaW5lci5hcHBlbmQoIGZvcm1faXRlbV9pbnB1dCApO1xuXHRcdHdpZGdldENvbnRhaW5lci5hcHBlbmQoIGxhYmVsICk7XG5cblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ01heGltdW0gQWdlJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9wYXNzd29yZF9wb2xpY3lfY29sdW1uMSwgJycsIHdpZGdldENvbnRhaW5lciApO1xuXG5cdFx0Ly9UYWIgMSBzdGFydFxuXG5cdFx0dmFyIHRhYl9sZGFwID0gdGhpcy5lZGl0X3ZpZXdfdGFiLmZpbmQoICcjdGFiX2xkYXAnICk7XG5cblx0XHR2YXIgdGFiX2xkYXBfY29sdW1uMSA9IHRhYl9sZGFwLmZpbmQoICcuZmlyc3QtY29sdW1uJyApO1xuXG5cdFx0dGhpcy5lZGl0X3ZpZXdfdGFic1syXSA9IFtdO1xuXG5cdFx0dGhpcy5lZGl0X3ZpZXdfdGFic1syXS5wdXNoKCB0YWJfbGRhcF9jb2x1bW4xICk7XG5cblx0XHQvL1xuXHRcdC8vIExEQVAgQXV0aGVudGljYXRpb25cblx0XHQvL1xuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQ09NQk9fQk9YICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQuVENvbWJvQm94KCB7IGZpZWxkOiAnbGRhcF9hdXRoZW50aWNhdGlvbl90eXBlX2lkJyB9ICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LnNldFNvdXJjZURhdGEoICR0aGlzLmxkYXBfYXV0aGVudGljYXRpb25fdHlwZV9hcnJheSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnTERBUCBBdXRoZW50aWNhdGlvbicgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfbGRhcF9jb2x1bW4xICk7XG5cblx0XHQvLyBTZXJ2ZXJcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblxuXHRcdGZvcm1faXRlbV9pbnB1dC5UVGV4dElucHV0KCB7IGZpZWxkOiAnbGRhcF9ob3N0Jywgd2lkdGg6IDI0MCB9ICk7XG5cdFx0d2lkZ2V0Q29udGFpbmVyID0gJCggJzxkaXYgY2xhc3M9XFwnd2lkZ2V0LWgtYm94XFwnPjwvZGl2PicgKTtcblx0XHRsYWJlbCA9ICQoICc8c3BhbiBjbGFzcz1cXCd3aWRnZXQtcmlnaHQtbGFiZWxcXCc+ICcgKyAkLmkxOG4uXyggJyhpZTogbGRhcC5leGFtcGxlLmNvbSBvciBsZGFwczovL2xkYXAuZXhhbXBsZS5jb20gZm9yIFNTTCknICkgKyAnPC9zcGFuPicgKTtcblxuXHRcdHdpZGdldENvbnRhaW5lci5hcHBlbmQoIGZvcm1faXRlbV9pbnB1dCApO1xuXHRcdHdpZGdldENvbnRhaW5lci5hcHBlbmQoIGxhYmVsICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdTZXJ2ZXInICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2xkYXBfY29sdW1uMSwgJycsIHdpZGdldENvbnRhaW5lciwgdHJ1ZSApO1xuXG5cdFx0Ly8gUG9ydFxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuVEVYVF9JTlBVVCApO1xuXG5cdFx0Zm9ybV9pdGVtX2lucHV0LlRUZXh0SW5wdXQoIHsgZmllbGQ6ICdsZGFwX3BvcnQnLCB3aWR0aDogNTAgfSApO1xuXHRcdHdpZGdldENvbnRhaW5lciA9ICQoICc8ZGl2IGNsYXNzPVxcJ3dpZGdldC1oLWJveFxcJz48L2Rpdj4nICk7XG5cdFx0bGFiZWwgPSAkKCAnPHNwYW4gY2xhc3M9XFwnd2lkZ2V0LXJpZ2h0LWxhYmVsXFwnPiAnICsgJC5pMThuLl8oICcoaWU6IDM4OSBvciA2MzYgZm9yIFNTTCknICkgKyAnPC9zcGFuPicgKTtcblxuXHRcdHdpZGdldENvbnRhaW5lci5hcHBlbmQoIGZvcm1faXRlbV9pbnB1dCApO1xuXHRcdHdpZGdldENvbnRhaW5lci5hcHBlbmQoIGxhYmVsICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdQb3J0JyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9sZGFwX2NvbHVtbjEsICcnLCB3aWRnZXRDb250YWluZXIsIHRydWUgKTtcblxuXHRcdC8vIEJpbmQgVXNlciBOYW1lXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5URVhUX0lOUFVUICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ2xkYXBfYmluZF91c2VyX25hbWUnIH0gKTtcblx0XHR3aWRnZXRDb250YWluZXIgPSAkKCAnPGRpdiBjbGFzcz1cXCd3aWRnZXQtaC1ib3hcXCc+PC9kaXY+JyApO1xuXHRcdGxhYmVsID0gJCggJzxzcGFuIGNsYXNzPVxcJ3dpZGdldC1yaWdodC1sYWJlbFxcJz4gJyArICQuaTE4bi5fKCAnVXNlZCB0byBzZWFyY2ggZm9yIHRoZSB1c2VyLCBmb3IgYW5vbnltb3VzIGJpbmRpbmcgZW50ZXI6IGFub255bW91cycgKSArICc8L3NwYW4+JyApO1xuXG5cdFx0d2lkZ2V0Q29udGFpbmVyLmFwcGVuZCggZm9ybV9pdGVtX2lucHV0ICk7XG5cdFx0d2lkZ2V0Q29udGFpbmVyLmFwcGVuZCggbGFiZWwgKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0JpbmQgVXNlciBOYW1lJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9sZGFwX2NvbHVtbjEsICcnLCB3aWRnZXRDb250YWluZXIsIHRydWUgKTtcblxuXHRcdC8vIEJpbmQgUGFzc3dvcmRcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblxuXHRcdGZvcm1faXRlbV9pbnB1dC5UVGV4dElucHV0KCB7IGZpZWxkOiAnbGRhcF9iaW5kX3Bhc3N3b3JkJyB9ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdCaW5kIFBhc3N3b3JkJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9sZGFwX2NvbHVtbjEsICcnLCBudWxsLCB0cnVlICk7XG5cblx0XHQvLyBCYXNlIEROXG5cblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblxuXHRcdGZvcm1faXRlbV9pbnB1dC5UVGV4dElucHV0KCB7IGZpZWxkOiAnbGRhcF9iYXNlX2RuJywgd2lkdGg6IDMwMCB9ICk7XG5cdFx0d2lkZ2V0Q29udGFpbmVyID0gJCggJzxkaXYgY2xhc3M9XFwnd2lkZ2V0LWgtYm94XFwnPjwvZGl2PicgKTtcblx0XHRsYWJlbCA9ICQoICc8c3BhbiBjbGFzcz1cXCd3aWRnZXQtcmlnaHQtbGFiZWxcXCc+ICcgKyAkLmkxOG4uXyggJyhpZTogb3U9UGVvcGxlLGRjPWV4YW1wbGUsZGM9Y29tKScgKSArICc8L3NwYW4+JyApO1xuXG5cdFx0d2lkZ2V0Q29udGFpbmVyLmFwcGVuZCggZm9ybV9pdGVtX2lucHV0ICk7XG5cdFx0d2lkZ2V0Q29udGFpbmVyLmFwcGVuZCggbGFiZWwgKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0Jhc2UgRE4nICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2xkYXBfY29sdW1uMSwgJycsIHdpZGdldENvbnRhaW5lciwgdHJ1ZSApO1xuXG5cdFx0Ly8gQmluZCBBdHRyaWJ1dGVcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblxuXHRcdGZvcm1faXRlbV9pbnB1dC5UVGV4dElucHV0KCB7IGZpZWxkOiAnbGRhcF9iaW5kX2F0dHJpYnV0ZScsIHdpZHRoOiAxNTAgfSApO1xuXHRcdHdpZGdldENvbnRhaW5lciA9ICQoICc8ZGl2IGNsYXNzPVxcJ3dpZGdldC1oLWJveFxcJz48L2Rpdj4nICk7XG5cdFx0bGFiZWwgPSAkKCAnPHNwYW4gY2xhc3M9XFwnd2lkZ2V0LXJpZ2h0LWxhYmVsXFwnPiAnICsgJC5pMThuLl8oICdGb3IgYmluZGluZyB0aGUgTERBUCB1c2VyLiAoaWU6IEFEL29wZW5MREFQOiB1c2VyUHJpbmNpcGFsTmFtZSwgTWFjIE9TWDogdWlkKScgKSArICc8L3NwYW4+JyApO1xuXG5cdFx0d2lkZ2V0Q29udGFpbmVyLmFwcGVuZCggZm9ybV9pdGVtX2lucHV0ICk7XG5cdFx0d2lkZ2V0Q29udGFpbmVyLmFwcGVuZCggbGFiZWwgKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0JpbmQgQXR0cmlidXRlJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9sZGFwX2NvbHVtbjEsICcnLCB3aWRnZXRDb250YWluZXIsIHRydWUgKTtcblxuXHRcdC8vIFVzZXIgRmlsdGVyXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5URVhUX0lOUFVUICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ2xkYXBfdXNlcl9maWx0ZXInLCB3aWR0aDogMTUwIH0gKTtcblx0XHR3aWRnZXRDb250YWluZXIgPSAkKCAnPGRpdiBjbGFzcz1cXCd3aWRnZXQtaC1ib3hcXCc+PC9kaXY+JyApO1xuXHRcdGxhYmVsID0gJCggJzxzcGFuIGNsYXNzPVxcJ3dpZGdldC1yaWdodC1sYWJlbFxcJz4gJyArICQuaTE4bi5fKCAnQWRkaXRpb25hbCBmaWx0ZXIgcGFyYW1ldGVycy4gKGllOiBpc190aW1ldHJleF91c2VyPTEpJyApICsgJzwvc3Bhbj4nICk7XG5cblx0XHR3aWRnZXRDb250YWluZXIuYXBwZW5kKCBmb3JtX2l0ZW1faW5wdXQgKTtcblx0XHR3aWRnZXRDb250YWluZXIuYXBwZW5kKCBsYWJlbCApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnVXNlciBGaWx0ZXInICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2xkYXBfY29sdW1uMSwgJycsIHdpZGdldENvbnRhaW5lciwgdHJ1ZSApO1xuXG5cdFx0Ly8gTG9naW4gQXR0cmlidXRlXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5URVhUX0lOUFVUICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ2xkYXBfbG9naW5fYXR0cmlidXRlJywgd2lkdGg6IDE1MCB9ICk7XG5cdFx0d2lkZ2V0Q29udGFpbmVyID0gJCggJzxkaXYgY2xhc3M9XFwnd2lkZ2V0LWgtYm94XFwnPjwvZGl2PicgKTtcblx0XHRsYWJlbCA9ICQoICc8c3BhbiBjbGFzcz1cXCd3aWRnZXQtcmlnaHQtbGFiZWxcXCc+ICcgKyAkLmkxOG4uXyggJ0ZvciBzZWFyY2hpbmcgdGhlIExEQVAgdXNlci4gKGllOiBBRDogc0FNQWNjb3VudE5hbWUsIG9wZW5MREFQOiBkbiwgTWFjIE9TWDogZG4pJyApICsgJzwvc3Bhbj4nICk7XG5cblx0XHR3aWRnZXRDb250YWluZXIuYXBwZW5kKCBmb3JtX2l0ZW1faW5wdXQgKTtcblx0XHR3aWRnZXRDb250YWluZXIuYXBwZW5kKCBsYWJlbCApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnTG9naW4gQXR0cmlidXRlJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9sZGFwX2NvbHVtbjEsICcnLCB3aWRnZXRDb250YWluZXIsIHRydWUgKTtcblx0fVxuXG5cdG9uVHlwZUNoYW5nZSgpIHtcblx0XHRpZiAoIHRoaXMuY3VycmVudF9lZGl0X3JlY29yZC5sZGFwX2F1dGhlbnRpY2F0aW9uX3R5cGVfaWQgPT0gMCApIHtcblx0XHRcdHRoaXMuZGV0YWNoRWxlbWVudCggJ2xkYXBfaG9zdCcgKTtcblx0XHRcdHRoaXMuZGV0YWNoRWxlbWVudCggJ2xkYXBfcG9ydCcgKTtcblx0XHRcdHRoaXMuZGV0YWNoRWxlbWVudCggJ2xkYXBfYmluZF91c2VyX25hbWUnICk7XG5cdFx0XHR0aGlzLmRldGFjaEVsZW1lbnQoICdsZGFwX2JpbmRfcGFzc3dvcmQnICk7XG5cdFx0XHR0aGlzLmRldGFjaEVsZW1lbnQoICdsZGFwX2Jhc2VfZG4nICk7XG5cdFx0XHR0aGlzLmRldGFjaEVsZW1lbnQoICdsZGFwX2JpbmRfYXR0cmlidXRlJyApO1xuXHRcdFx0dGhpcy5kZXRhY2hFbGVtZW50KCAnbGRhcF91c2VyX2ZpbHRlcicgKTtcblx0XHRcdHRoaXMuZGV0YWNoRWxlbWVudCggJ2xkYXBfbG9naW5fYXR0cmlidXRlJyApO1xuXG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuYXR0YWNoRWxlbWVudCggJ2xkYXBfaG9zdCcgKTtcblx0XHRcdHRoaXMuYXR0YWNoRWxlbWVudCggJ2xkYXBfcG9ydCcgKTtcblx0XHRcdHRoaXMuYXR0YWNoRWxlbWVudCggJ2xkYXBfYmluZF91c2VyX25hbWUnICk7XG5cdFx0XHR0aGlzLmF0dGFjaEVsZW1lbnQoICdsZGFwX2JpbmRfcGFzc3dvcmQnICk7XG5cdFx0XHR0aGlzLmF0dGFjaEVsZW1lbnQoICdsZGFwX2Jhc2VfZG4nICk7XG5cdFx0XHR0aGlzLmF0dGFjaEVsZW1lbnQoICdsZGFwX2JpbmRfYXR0cmlidXRlJyApO1xuXHRcdFx0dGhpcy5hdHRhY2hFbGVtZW50KCAnbGRhcF91c2VyX2ZpbHRlcicgKTtcblx0XHRcdHRoaXMuYXR0YWNoRWxlbWVudCggJ2xkYXBfbG9naW5fYXR0cmlidXRlJyApO1xuXHRcdH1cblxuXHRcdHRoaXMuZWRpdEZpZWxkUmVzaXplKCk7XG5cdH1cblxuXHRnZXRDb21wYW55UGFzc3dvcmRQb2xpY3lUYWJIdG1sKCkge1xuXHRcdHJldHVybiBgPGRpdiBpZD1cInRhYl9wYXNzd29yZF9wb2xpY3lcIiBjbGFzcz1cImVkaXQtdmlldy10YWItb3V0c2lkZVwiPlxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJlZGl0LXZpZXctdGFiXCIgaWQ9XCJ0YWJfcGFzc3dvcmRfcG9saWN5X2NvbnRlbnRfZGl2XCI+XG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmlyc3QtY29sdW1uIGZ1bGwtd2lkdGgtY29sdW1uXCI+PC9kaXY+XG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwic2F2ZS1hbmQtY29udGludWUtZGl2IHBlcm1pc3Npb24tZGVmaW5lZC1kaXZcIj5cblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJtZXNzYWdlIHBlcm1pc3Npb24tbWVzc2FnZVwiPjwvc3Bhbj5cblx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L2Rpdj5gO1xuXHR9XG5cbn1cblxuLy9cbi8vQ29tcGFueVZpZXdDb250cm9sbGVyLmxvYWRWaWV3ID0gZnVuY3Rpb24oKSB7XG4vL1xuLy9cdCAgR2xvYmFsLmxvYWRWaWV3U291cmNlKCAnQ29tcGFueScsICdDb21wYW55Vmlldy5odG1sJywgZnVuY3Rpb24oIHJlc3VsdCApIHtcbi8vXG4vL1x0XHQgIHZhciBhcmdzID0ge307XG4vL1x0XHQgIHZhciB0ZW1wbGF0ZSA9IF8udGVtcGxhdGUoIHJlc3VsdCwgYXJncyApO1xuLy9cbi8vXHRcdCAgR2xvYmFsLmNvbnRlbnRDb250YWluZXIoKS5odG1sKCB0ZW1wbGF0ZSApO1xuLy9cdCAgfSApXG4vL1xuLy99OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///4164\n")}}]); |