	init: function (editor) {
		if (editor.addFeature) {
			editor.addFeature({
				allowedContent: 'img[alt,id,!src]{width,height};'
			});
		}
		editor.on('paste', (event, a, b) => {
			this.onPaste(event);
		});
		const pluginName = 'base64image-dialog';
		editor.ui.addToolbarGroup('base64image', 'insert');
		editor.ui.addButton('base64image', {
			label: editor.lang.common.image,
			command: pluginName,
			toolbar: 'insert'
		});
		CKEDITOR.dialog.add(pluginName, this.path + 'dialogs/dialog.js');
		editor.addCommand(
			pluginName,
			new CKEDITOR.dialogCommand(pluginName, {
				allowedContent:
					'img[alt,!src]{border-style,border-width,float,height,margin,margin-bottom,margin-left,margin-right,margin-top,width}',
				requiredContent: 'img[alt,src]',
				contentTransformations: [
					['img{width}: sizeToStyle', 'img[width]: sizeToAttribute'],
					['img{float}: alignmentToStyle', 'img[align]: alignmentToAttribute']
				]
			})
		);
		editor.on('doubleclick', function (evt) {
			if (evt.data.element && !evt.data.element.isReadOnly() && evt.data.element.getName() === 'img') {
				evt.data.dialog = pluginName;
				editor.getSelection().selectElement(evt.data.element);
			}
		});
		if (editor.addMenuItem) {
			editor.addMenuGroup('imageToBase64Group');
			editor.addMenuItem('imageToBase64Item', {
				label: editor.lang.common.image,
				icon: this.path + 'icons/base64image.png',
				command: pluginName,
				group: 'imageToBase64Group'
			});
		}
		if (editor.contextMenu) {
			editor.contextMenu.addListener(function (element) {
				if (element && element.getName() === 'img') {
					editor.getSelection().selectElement(element);
					return { imageToBase64Item: CKEDITOR.TRISTATE_ON };
				}
				return null;
			});
		}
	},
The software allows the attacker to upload or transfer files of dangerous types that can be automatically processed within the product's environment.