text:
import unittest
import pytest
import mock
import six
import docker
import os
import json
import logging
import sys
import tarfile
import io
from io import BytesIO
import uuid

from docker_scripts.squash import Squash
from docker_scripts.errors import SquashError

if not six.PY3:
    import docker_scripts.lib.xtarfile

class TestIntegSquash(unittest.TestCase):

    docker = docker.Client(version='1.16')

    log = logging.getLogger()
    handler = logging.StreamHandler()
    formatter = logging.Formatter(
        '%(asctime)s %(name)-12s %(levelname)-8s %(message)s')
    handler.setFormatter(formatter)
    log.addHandler(handler)
    log.setLevel(logging.DEBUG)

    class Image(object):

        def __init__(self, dockerfile):
            self.dockerfile = dockerfile
            self.docker = TestIntegSquash.docker
            self.name = "integ-%s" % uuid.uuid1()
            self.tag = "%s:latest" % self.name

        def __enter__(self):
            f = BytesIO(self.dockerfile.encode('utf-8'))
            for line in self.docker.build(fileobj=f, tag=self.tag, rm=True):
                try:
                    print(json.loads(line)["stream"].strip())
                except:
                    print(line)

            self.history = self.docker.history(self.tag)
            self.layers = [o['Id'] for o in self.history]
            self.metadata = self.docker.inspect_image(self.tag)

            return self

        def __exit__(self, exc_type, exc_val, exc_tb):
            if not os.getenv('CI'):
                self.docker.remove_image(image=self.tag, force=True)

    class SquashedImage(object):

        def __init__(self, image, number_of_layers, output_path=None):
            self.image = image
            self.number_of_layers = number_of_layers
            self.docker = TestIntegSquash.docker
            self.log = TestIntegSquash.log
            self.tag = "%s:squashed" % self.image.name
            self.output_path = output_path

        def __enter__(self):
            from_layer = self.docker.history(
                self.image.tag)[self.number_of_layers]['Id']

            squash = Squash(
                self.log, self.image.tag, self.docker, tag=self.tag, from_layer=from_layer, output_path=self.output_path)
            self.image_id = squash.run()

            if not self.output_path:
                self.squashed_layer = self._squashed_layer()
                self.layers = [o['Id'] for o in self.docker.history(self.tag)]
                self.metadata = self.docker.inspect_image(self.tag)

            return self

        def __exit__(self, exc_type, exc_val, exc_tb):
            if not (os.getenv('CI') or self.output_path):
                self.docker.remove_image(image=self.tag, force=True)

        def _save_image(self):
            image = self.docker.get_image(self.tag)

            buf = io.BytesIO()
            buf.write(image.data)
            buf.seek(0)  # Rewind

            return buf

        def _extract_file(self, name, tar_object):
            with tarfile.open(fileobj=tar_object, mode='r') as tar:
                member = tar.getmember(name)
                return tar.extractfile(member)

        def _squashed_layer(self):
            image_id = self.docker.inspect_image(self.tag)['Id']
            image = self._save_image()

            return self._extract_file(image_id + '/layer.tar', image)

        def assertFileExists(self, name):
            self.squashed_layer.seek(0)  # Rewind
            with tarfile.open(fileobj=self.squashed_layer, mode='r') as tar:
                assert name in tar.getnames(
                ), "File '%s' was not found in the squashed files: %s" % (name, tar.getnames())

        def assertFileDoesNotExist(self, name):
            self.squashed_layer.seek(0)  # Rewind
            with tarfile.open(fileobj=self.squashed_layer, mode='r') as tar:
                assert name not in tar.getnames(
                ), "File '%s' was found in the squashed layer files: %s" % (name, tar.getnames())

        def assertFileIsNotHardLink(self, name):
            self.squashed_layer.seek(0)  # Rewind
            with tarfile.open(fileobj=self.squashed_layer, mode='r') as tar:
                member = tar.getmember(name)
                assert member.islnk(
                ) == False, "File '%s' should not be a hard link, but it is" % name

    class Container(object):

        def __init__(self, image):
            self.image = image
            self.docker = TestIntegSquash.docker
            self.log = TestIntegSquash.log

        def __enter__(self):
            self.container = self.docker.create_container(image=self.image.tag)
            data = self.docker.export(self.container)
            self.content = six.BytesIO(data.read())
            return self

        def __exit__(self, exc_type, exc_val, exc_tb):
            if not os.getenv('CI'):
                self.docker.remove_container(self.container, force=True)

        def assertFileExists(self, name):
            self.content.seek(0)  # Rewind
            with tarfile.open(fileobj=self.content, mode='r') as tar:
                assert name in tar.getnames(
                ), "File %s was not found in the container files: %s" % (name, tar.getnames())

        def assertFileDoesNotExist(self, name):
            self.content.seek(0)  # Rewind
            with tarfile.open(fileobj=self.content, mode='r') as tar:
                assert name not in tar.getnames(
                ), "File %s was found in the container files: %s" % (name, tar.getnames())

    def test_all_files_should_be_in_squashed_layer(self):
        """
        We squash all layers in RUN, all files should be in the resulting squashed layer.
        """
        dockerfile = '''
        FROM busybox
        RUN touch /somefile_layer1
        RUN touch /somefile_layer2
        RUN touch /somefile_layer3
        '''

        with self.Image(dockerfile) as image:
            with self.SquashedImage(image, 3) as squashed_image:
                squashed_image.assertFileDoesNotExist('.wh.somefile_layer1')
                squashed_image.assertFileDoesNotExist('.wh.somefile_layer2')
                squashed_image.assertFileDoesNotExist('.wh.somefile_layer3')
                squashed_image.assertFileExists('somefile_layer1')
                squashed_image.assertFileExists('somefile_layer2')
                squashed_image.assertFileExists('somefile_layer3')

                with self.Container(squashed_image) as container:
                    container.assertFileExists('somefile_layer1')
                    container.assertFileExists('somefile_layer2')
                    container.assertFileExists('somefile_layer3')

                    # We should have two layers less in the image
                    self.assertTrue(
                        len(squashed_image.layers) == len(image.layers) - 2)

    def test_only_files_from_squashed_image_should_be_in_squashed_layer(self):
        """
        We squash all layers in RUN, all files should be in the resulting squashed layer.
        """
        dockerfile = '''
        FROM busybox
        RUN touch /somefile_layer1
        RUN touch /somefile_layer2
        RUN touch /somefile_layer3
        '''

        with self.Image(dockerfile) as image:
            with self.SquashedImage(image, 2) as squashed_image:
                squashed_image.assertFileDoesNotExist('.wh.somefile_layer2')
                squashed_image.assertFileDoesNotExist('.wh.somefile_layer3')
                # This file should not be in the squashed layer
                squashed_image.assertFileDoesNotExist('somefile_layer1')
                # Nor a marker files for it
                squashed_image.assertFileDoesNotExist('.wh.somefile_layer1')
                squashed_image.assertFileExists('somefile_layer2')
                squashed_image.assertFileExists('somefile_layer3')

                with self.Container(squashed_image) as container:
                    # This file should be in the container
                    container.assertFileExists('somefile_layer1')
                    container.assertFileExists('somefile_layer2')
                    container.assertFileExists('somefile_layer3')

                    # We should have two layers less in the image
                    self.assertEqual(
                        len(squashed_image.layers), len(image.layers) - 1)

    def test_there_should_be_a_marker_file_in_the_squashed_layer(self):
        """
        Here we're testing that the squashed layer should contain a '.wh.somefile_layer1'
        file, because the file was not found in the squashed tar and it is present in
        the layers we do not squash.
        """

        dockerfile = '''
        FROM busybox
        RUN touch /somefile_layer1
        RUN rm /somefile_layer1
        RUN touch /somefile_layer3
        '''

        with self.Image(dockerfile) as image:
            with self.SquashedImage(image, 2) as squashed_image:
                squashed_image.assertFileDoesNotExist('somefile_layer1')
                squashed_image.assertFileExists('somefile_layer3')
                squashed_image.assertFileExists('.wh.somefile_layer1')
                squashed_image.assertFileIsNotHardLink('.wh.somefile_layer1')

                with self.Container(squashed_image) as container:
                    container.assertFileExists('somefile_layer3')
                    container.assertFileDoesNotExist('somefile_layer1')

                    # We should have one layer less in the image
                    self.assertEqual(
                        len(squashed_image.layers), len(image.layers) - 1)

    def test_there_should_be_a_marker_file_in_the_squashed_layer_even_more_complex(self):
        dockerfile = '''
        FROM busybox
        RUN touch /somefile_layer1
        RUN rm /somefile_layer1
        RUN touch /somefile_layer2
        RUN touch /somefile_layer3
        RUN rm /somefile_layer2
        RUN touch /somefile_layer4
        '''

        with self.Image(dockerfile) as image:
            with self.SquashedImage(image, 2) as squashed_image:
                squashed_image.assertFileDoesNotExist('somefile_layer1')
                squashed_image.assertFileDoesNotExist('somefile_layer2')
                squashed_image.assertFileDoesNotExist('somefile_layer3')
                squashed_image.assertFileExists('somefile_layer4')

                squashed_image.assertFileDoesNotExist('.wh.somefile_layer1')
                squashed_image.assertFileExists('.wh.somefile_layer2')
                squashed_image.assertFileIsNotHardLink('.wh.somefile_layer2')
                squashed_image.assertFileDoesNotExist('.wh.somefile_layer3')
                squashed_image.assertFileDoesNotExist('.wh.somefile_layer4')

                with self.Container(squashed_image) as container:
                    container.assertFileExists('somefile_layer3')
                    container.assertFileExists('somefile_layer4')
                    container.assertFileDoesNotExist('somefile_layer1')
                    container.assertFileDoesNotExist('somefile_layer2')

                    # We should have one layer less in the image
                    self.assertEqual(
                        len(squashed_image.layers), len(image.layers) - 1)

    def test_should_handle_removal_of_directories(self):
        dockerfile = '''
        FROM busybox
        RUN mkdir -p /some/dir/tree
        RUN touch /some/dir/tree/file1
        RUN touch /some/dir/tree/file2
        RUN touch /some/dir/file1
        RUN touch /some/dir/file2
        RUN rm -rf /some/dir/tree
        '''

        with self.Image(dockerfile) as image:
            with self.SquashedImage(image, 2) as squashed_image:
                squashed_image.assertFileDoesNotExist('some/dir/tree/file1')
                squashed_image.assertFileDoesNotExist('some/dir/tree/file2')
                squashed_image.assertFileDoesNotExist('some/dir/file1')
                squashed_image.assertFileExists('some/dir/file2')

                squashed_image.assertFileExists('some/dir/.wh.tree')
                squashed_image.assertFileIsNotHardLink('some/dir/.wh.tree')

                with self.Container(squashed_image) as container:
                    container.assertFileExists('some/dir/file1')
                    container.assertFileExists('some/dir/file2')
                    container.assertFileDoesNotExist('some/dir/tree')
                    container.assertFileDoesNotExist('some/dir/tree/file1')
                    container.assertFileDoesNotExist('some/dir/tree/file2')

                    # We should have one layer less in the image
                    self.assertEqual(
                        len(squashed_image.layers), len(image.layers) - 1)

    def test_should_skip_files_when_these_are_modified_and_removed_in_squashed_layer(self):
        dockerfile = '''
        FROM busybox
        RUN touch /file
        RUN chmod -R 777 /file
        RUN rm -rf /file
        '''

        with self.Image(dockerfile) as image:
            with self.SquashedImage(image, 2) as squashed_image:
                squashed_image.assertFileDoesNotExist('file')
                squashed_image.assertFileExists('.wh.file')
                squashed_image.assertFileIsNotHardLink('.wh.file')

                with self.Container(squashed_image) as container:
                    container.assertFileDoesNotExist('file')

                    # We should have one layer less in the image
                    self.assertEqual(
                        len(squashed_image.layers), len(image.layers) - 1)

    def test_should_skip_files_when_these_are_removed_and_modified_in_squashed_layer(self):
        dockerfile = '''
        FROM busybox
        RUN touch /file
        RUN chmod -R 777 /file
        RUN rm -rf /file
        RUN touch /file
        '''

        with self.Image(dockerfile) as image:
            with self.SquashedImage(image, 3) as squashed_image:
                squashed_image.assertFileExists('file')
                squashed_image.assertFileDoesNotExist('.wh.file')

                with self.Container(squashed_image) as container:
                    container.assertFileExists('file')

                    # We should have two layers less in the image
                    self.assertEqual(
                        len(squashed_image.layers), len(image.layers) - 2)

    def test_should_handle_multiple_changes_to_files_in_squashed_layers(self):
        dockerfile = '''
        FROM busybox
        RUN mkdir -p /some/dir/tree
        RUN touch /some/dir/tree/file1
        RUN touch /some/dir/tree/file2
        RUN touch /some/dir/file1
        RUN touch /some/dir/file2
        RUN chmod -R 777 /some
        RUN rm -rf /some/dir/tree
        '''

        with self.Image(dockerfile) as image:
            with self.SquashedImage(image, 2) as squashed_image:
                squashed_image.assertFileDoesNotExist('some/dir/tree/file1')
                squashed_image.assertFileDoesNotExist('some/dir/tree/file2')
                squashed_image.assertFileExists('some/dir/file1')
                squashed_image.assertFileExists('some/dir/file2')

                squashed_image.assertFileExists('some/dir/.wh.tree')
                squashed_image.assertFileIsNotHardLink('some/dir/.wh.tree')

                with self.Container(squashed_image) as container:
                    container.assertFileExists('some/dir/file1')
                    container.assertFileExists('some/dir/file2')
                    container.assertFileDoesNotExist('some/dir/tree')
                    container.assertFileDoesNotExist('some/dir/tree/file1')
                    container.assertFileDoesNotExist('some/dir/tree/file2')

                    # We should have one layer less in the image
                    self.assertEqual(
                        len(squashed_image.layers), len(image.layers) - 1)

    # https://github.com/goldmann/docker-scripts/issues/28
    def test_docker_version_in_metadata_should_be_set_after_squashing(self):
        dockerfile = '''
        FROM busybox
        RUN touch file
        '''

        with self.Image(dockerfile) as image:
            with self.SquashedImage(image, 2) as squashed_image:
                self.assertEqual(
                    image.metadata['DockerVersion'], squashed_image.metadata['DockerVersion'])

    # https://github.com/goldmann/docker-scripts/issues/30
    # https://github.com/goldmann/docker-scripts/pull/31
    def test_files_in_squashed_tar_not_prefixed_wth_dot(self):
        dockerfile = '''
        FROM busybox
        RUN touch file
        '''

        with self.Image(dockerfile) as image:
            with self.SquashedImage(image, 2, output_path="image.tar") as squashed_image:
                with tarfile.open("image.tar", mode='r') as tar:
                    all_files = tar.getnames()
                    for name in all_files:
                        self.assertFalse(name.startswith('.'))

    # https://github.com/goldmann/docker-scripts/issues/32
    def test_version_file_exists_in_squashed_layer(self):
        dockerfile = '''
        FROM busybox
        RUN touch file
        '''

        with self.Image(dockerfile) as image:
            with self.SquashedImage(image, 2, output_path="image.tar") as squashed_image:
                with tarfile.open("image.tar", mode='r') as tar:
                    all_files = tar.getnames()
                    self.assertIn(squashed_image.image_id + "/json", all_files)
                    self.assertIn(
                        squashed_image.image_id + "/layer.tar", all_files)
                    self.assertIn(
                        squashed_image.image_id + "/VERSION", all_files)

    # https://github.com/goldmann/docker-scripts/issues/33
    def test_docker_size_in_metadata_should_be_upper_case(self):
        dockerfile = '''
        FROM busybox
        RUN touch file
        '''

        with self.Image(dockerfile) as image:
            with self.SquashedImage(image, 2) as squashed_image:
                self.assertIsInstance(image.metadata['Size'], int)
                with self.assertRaisesRegexp(KeyError, "'size'"):
                    self.assertEqual(image.metadata['size'], None)

if __name__ == '__main__':
    unittest.main()


text:
//
//  PNRadarChart.h
//  PNChartDemo
//
//  Created by Lei on 15/7/1.
//  Copyright (c) 2015年 kevinzhow. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "PNGenericChart.h"
#import "PNRadarChartDataItem.h"

#define MAXCIRCLE 20

typedef NS_ENUM(NSUInteger, PNRadarChartLabelStyle) {
    PNRadarChartLabelStyleCircle = 0,
    PNRadarChartLabelStyleHorizontal,
    PNRadarChartLabelStyleHidden,
};

@interface PNRadarChart : PNGenericChart

-(id)initWithFrame:(CGRect)frame  items:(NSArray *)items valueDivider:(CGFloat)unitValue;

/**
 *Draws the chart in an animated fashion.
 */
-(void)strokeChart;

/** Array of `RadarChartDataItem` objects, one for each corner. */
@property (nonatomic) NSArray *chartData;
/** The unit of this chart ,default is 1 */
@property (nonatomic) CGFloat valueDivider;
/** The maximum for the range of values to display on the chart */
@property (nonatomic) CGFloat maxValue;
/** Default is gray. */
@property (nonatomic) UIColor *webColor;
/** Default is green , with an alpha of 0.7 */
@property (nonatomic) UIColor *plotColor;
/** Default is black */
@property (nonatomic) UIColor *fontColor;
/** Default is orange */
@property (nonatomic) UIColor *graduationColor;
/** Default is 15 */
@property (nonatomic) CGFloat fontSize;
/** Controls the labels display style that around chart */
@property (nonatomic, assign) PNRadarChartLabelStyle labelStyle;
/** Tap the label will display detail value ,default is YES. */
@property (nonatomic, assign) BOOL isLabelTouchable;
/** is show graduation on the chart ,default is NO. */
@property (nonatomic, assign) BOOL isShowGraduation;

@end

redpajama_set_name: RedPajamaGithub


text:
package ru.furry.furview2.drivers;

import android.util.Log;

import java.util.ArrayList;
import java.util.List;

import ru.furry.furview2.R;
import ru.furry.furview2.drivers.dbDriver.DriverDB;
import ru.furry.furview2.drivers.e621.DriverE621;

public enum Drivers {

    E621NET("e621.net", DriverE621.class, R.string.e621help, Drivertype.IMAGEBOARD),
    DB_DRIVER("local search", DriverDB.class, R.string.local_search_help, Drivertype.IMAGEBOARD);

    private static Drivers[] driverlist = Drivers.values();

    public final String drivername;
    public final Class<? extends Driver> driverclass;
    public final int searchHelpId;
    public final Drivertype type;

    Drivers(String name, Class<? extends Driver> driverclass, int searchHelp, Drivertype type) {
        this.drivername = name;
        this.driverclass = driverclass;
        this.searchHelpId = searchHelp;
        this.type = type;
    }

    public static Drivers getDriver(String drivername) {
        for (Drivers driver : driverlist) {
            if (driver.drivername.equals(drivername)) {
                return driver;
            }
        }
        return null;
    }

    public static String[] getDriverList() {
        String[] drivernames = new String[driverlist.length];
        for (int i = 0; i < driverlist.length; i++) {
            drivernames[i] = driverlist[i].drivername;
        }
        return drivernames;
    }

    public static List<Drivers> getDriversByGroup(Drivertype type) {
        List<Drivers> drivers = new ArrayList<>();
        for (Drivers driver : driverlist) {
            if (driver.type == type) {
                drivers.add(driver);
            }
        }
        return drivers;
    }

}


text:
export {Inject, Injectable} from './metadata';
export {Container, ProviderOptions} from './container';


text: export { default as SkipLink } from './SkipLink';


text:
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="ChangeListManager">
    <list default="true" id="06398586-209c-4077-aa71-0d8f1ecc8474" name="Default" comment="">
      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/main/java/WeatherStrategy.java" afterPath="$PROJECT_DIR$/src/main/java/WeatherStrategy.java" />
    </list>
    <ignored path="$PROJECT_DIR$/out/" />
    <ignored path="$PROJECT_DIR$/target/" />
    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
    <option name="TRACKING_ENABLED" value="true" />
    <option name="SHOW_DIALOG" value="false" />
    <option name="HIGHLIGHT_CONFLICTS" value="true" />
    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
    <option name="LAST_RESOLUTION" value="IGNORE" />
  </component>
  <component name="CreatePatchCommitExecutor">
    <option name="PATCH_PATH" value="" />
  </component>
  <component name="DatabaseView">
    <option name="GROUP_SCHEMA" value="true" />
    <option name="GROUP_CONTENTS" value="false" />
    <option name="SORT_POSITIONED" value="false" />
    <option name="SHOW_TABLE_DETAILS" value="true" />
    <option name="SHOW_EMPTY_GROUPS" value="false" />
    <option name="AUTO_SCROLL_FROM_SOURCE" value="false" />
  </component>
  <component name="DockManager">
    <window id="1">
      <content type="file-editors">
        <state>
          <leaf SIDE_TABS_SIZE_LIMIT_KEY="375">
            <file leaf-file-name="Chat.java" pinned="false" current-in-tab="true">
              <entry file="file://$PROJECT_DIR$/src/main/java/Chat.java">
                <provider selected="true" editor-type-id="text-editor">
                  <state relative-caret-position="578">
                    <caret line="46" column="38" lean-forward="true" selection-start-line="46" selection-start-column="38" selection-end-line="46" selection-end-column="38" />
                    <folding>
                      <element signature="method#logout#0;class#Chat#0" expanded="false" />
                      <element signature="method#jsonChannelsList#0;class#Chat#0" expanded="false" />
                      <element signature="method#jsonUsersList#0;class#Chat#0" expanded="false" />
                    </folding>
                  </state>
                </provider>
              </entry>
            </file>
          </leaf>
        </state>
      </content>
    </window>
  </component>
  <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
  <component name="FavoritesManager">
    <favorites_list name="przechat" />
  </component>
  <component name="FileEditorManager">
    <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
      <file leaf-file-name="Channel.java" pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/src/main/java/Channel.java">
          <provider selected="true" editor-type-id="text-editor">
            <state relative-caret-position="242">
              <caret line="16" column="35" lean-forward="false" selection-start-line="16" selection-start-column="35" selection-end-line="16" selection-end-column="35" />
              <folding>
                <element signature="method#update#0;class#Channel#0" expanded="false" />
                <element signature="method#isObservedBy#0;class#Channel#0" expanded="false" />
              </folding>
            </state>
          </provider>
        </entry>
      </file>
      <file leaf-file-name="Bot.java" pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/src/main/java/Bot.java">
          <provider selected="true" editor-type-id="text-editor">
            <state relative-caret-position="242">
              <caret line="15" column="0" lean-forward="false" selection-start-line="15" selection-start-column="0" selection-end-line="15" selection-end-column="48" />
              <folding />
            </state>
          </provider>
        </entry>
      </file>
      <file leaf-file-name="WeatherStrategy.java" pinned="false" current-in-tab="true">
        <entry file="file://$PROJECT_DIR$/src/main/java/WeatherStrategy.java">
          <provider selected="true" editor-type-id="text-editor">
            <state relative-caret-position="176">
              <caret line="30" column="20" lean-forward="false" selection-start-line="30" selection-start-column="20" selection-end-line="30" selection-end-column="20" />
              <folding>
                <element signature="imports" expanded="true" />
                <element signature="method#urlBuilder#0;class#WeatherStrategy#0" expanded="false" />
                <element signature="method#jsonFromURL#0;class#WeatherStrategy#0" expanded="false" />
              </folding>
            </state>
          </provider>
        </entry>
      </file>
      <file leaf-file-name="pom.xml" pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/pom.xml">
          <provider selected="true" editor-type-id="text-editor">
            <state relative-caret-position="792">
              <caret line="36" column="21" lean-forward="false" selection-start-line="36" selection-start-column="21" selection-end-line="36" selection-end-column="21" />
              <folding />
            </state>
          </provider>
        </entry>
      </file>
      <file leaf-file-name="Person.java" pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/src/main/java/Person.java">
          <provider selected="true" editor-type-id="text-editor">
            <state relative-caret-position="1144">
              <caret line="64" column="44" lean-forward="false" selection-start-line="64" selection-start-column="44" selection-end-line="64" selection-end-column="44" />
              <folding />
            </state>
          </provider>
        </entry>
      </file>
      <file leaf-file-name="SocketHandler.java" pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/src/main/java/SocketHandler.java">
          <provider selected="true" editor-type-id="text-editor">
            <state relative-caret-position="770">
              <caret line="42" column="40" lean-forward="false" selection-start-line="42" selection-start-column="33" selection-end-line="42" selection-end-column="40" />
              <folding />
            </state>
          </provider>
        </entry>
      </file>
    </leaf>
  </component>
  <component name="FileTemplateManagerImpl">
    <option name="RECENT_TEMPLATES">
      <list>
        <option value="Class" />
        <option value="Interface" />
      </list>
    </option>
  </component>
  <component name="FindInProjectRecents">
    <findStrings>
      <find>say</find>
      <find>msg</find>
      <find>get</find>
      <find>wea</find>
    </findStrings>
  </component>
  <component name="Git.Settings">
    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/.." />
  </component>
  <component name="GradleLocalSettings">
    <option name="externalProjectsViewState">
      <projects_view />
    </option>
  </component>
  <component name="IdeDocumentHistory">
    <option name="CHANGED_PATHS">
      <list>
        <option value="$PROJECT_DIR$/src/main/java/LoginSocketHandler.java" />
        <option value="$PROJECT_DIR$/src/main/java/IChannel.java" />
        <option value="$PROJECT_DIR$/src/main/resources/public/loginsocket.js" />
        <option value="$PROJECT_DIR$/src/main/resources/public/style.css" />
        <option value="$PROJECT_DIR$/src/main/java/ChatChannel.java" />
        <option value="$PROJECT_DIR$/src/main/resources/public/index.html" />
        <option value="$PROJECT_DIR$/src/main/java/User.java" />
        <option value="$PROJECT_DIR$/src/main/java/IChannelBot.java" />
        <option value="$PROJECT_DIR$/src/main/java/ChatBot.java" />
        <option value="$PROJECT_DIR$/src/main/java/AChatCbot.java" />
        <option value="$PROJECT_DIR$/src/main/java/AChatBot.java" />
        <option value="$PROJECT_DIR$/src/main/resources/public/socket.js" />
        <option value="$PROJECT_DIR$/src/main/java/SocketHandler.java" />
        <option value="$PROJECT_DIR$/src/main/java/ABot.java" />
        <option value="$PROJECT_DIR$/src/main/java/Bor.java" />
        <option value="$PROJECT_DIR$/src/main/java/Sender.java" />
        <option value="$PROJECT_DIR$/src/main/java/ResponseStrategy.java" />
        <option value="$PROJECT_DIR$/src/main/java/Util.java" />
        <option value="$PROJECT_DIR$/src/main/java/Channel.java" />
        <option value="$PROJECT_DIR$/src/main/java/Chat.java" />
        <option value="$PROJECT_DIR$/src/main/java/Bot.java" />
        <option value="$PROJECT_DIR$/src/main/java/Person.java" />
        <option value="$PROJECT_DIR$/pom.xml" />
        <option value="$PROJECT_DIR$/src/main/java/WeatherStrategy.java" />
      </list>
    </option>
  </component>
  <component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
  <component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" />
  <component name="JsGulpfileManager">
    <detection-done>true</detection-done>
    <sorting>DEFINITION_ORDER</sorting>
  </component>
  <component name="JsbtTreeLayoutManager">
    <layout place="tools.popupGrunt">
      <scroll-view-position x="0" y="0" />
    </layout>
  </component>
  <component name="MavenImportPreferences">
    <option name="importingSettings">
      <MavenImportingSettings>
        <option name="importAutomatically" value="true" />
      </MavenImportingSettings>
    </option>
  </component>
  <component name="ProjectFrameBounds">
    <option name="x" value="2391" />
    <option name="y" value="-9" />
    <option name="width" value="1618" />
    <option name="height" value="1248" />
  </component>
  <component name="ProjectLevelVcsManager" settingsEditedManually="true">
    <ConfirmationsSetting value="2" id="Add" />
  </component>
  <component name="ProjectView">
    <navigator currentView="ProjectPane" proportions="" version="1">
      <flattenPackages />
      <showMembers />
      <showModules />
      <showLibraryContents />
      <hideEmptyPackages />
      <abbreviatePackageNames />
      <autoscrollToSource />
      <autoscrollFromSource />
      <sortByType />
      <manualOrder />
      <foldersAlwaysOnTop value="true" />
    </navigator>
    <panes>
      <pane id="PackagesPane" />
      <pane id="Scope" />
      <pane id="Scratches" />
      <pane id="ProjectPane">
        <subPane>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="przechat" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="przechat" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
          </PATH>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="przechat" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="przechat" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="src" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
          </PATH>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="przechat" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="przechat" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="src" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="main" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="resources" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="public" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
          </PATH>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="przechat" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="przechat" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="src" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="main" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="java" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
          </PATH>
        </subPane>
      </pane>
    </panes>
  </component>
  <component name="PropertiesComponent">
    <property name="settings.editor.selected.configurable" value="reference.projectsettings.compiler.javacompiler" />
    <property name="project.structure.last.edited" value="Project" />
    <property name="project.structure.proportion" value="0.15" />
    <property name="project.structure.side.proportion" value="0.2" />
    <property name="last_opened_file_path" value="$PROJECT_DIR$" />
    <property name="WebServerToolWindowFactoryState" value="false" />
    <property name="aspect.path.notification.shown" value="true" />
    <property name="js.eslint.eslintPackage" value="" />
    <property name="full.screen.before.presentation.mode" value="false" />
  </component>
  <component name="RunManager" selected="Application.Chat">
    <configuration default="false" name="Chat" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
      <option name="MAIN_CLASS_NAME" value="Chat" />
      <option name="VM_PARAMETERS" />
      <option name="PROGRAM_PARAMETERS" />
      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
      <option name="ALTERNATIVE_JRE_PATH" />
      <option name="ENABLE_SWING_INSPECTOR" value="false" />
      <option name="ENV_VARIABLES" />
      <option name="PASS_PARENT_ENVS" value="true" />
      <module name="przechat" />
      <envs />
      <method />
    </configuration>
    <configuration default="true" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" factoryName="Plugin">
      <module name="" />
      <option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" />
      <option name="PROGRAM_PARAMETERS" />
      <predefined_log_file id="idea.log" enabled="true" />
      <method />
    </configuration>
    <configuration default="true" type="AndroidRunConfigurationType" factoryName="Android App">
      <module name="" />
      <option name="DEPLOY" value="true" />
      <option name="ARTIFACT_NAME" value="" />
      <option name="PM_INSTALL_OPTIONS" value="" />
      <option name="ACTIVITY_EXTRA_FLAGS" value="" />
      <option name="MODE" value="default_activity" />
      <option name="TARGET_SELECTION_MODE" value="SHOW_DIALOG" />
      <option name="PREFERRED_AVD" value="" />
      <option name="CLEAR_LOGCAT" value="false" />
      <option name="SHOW_LOGCAT_AUTOMATICALLY" value="false" />
      <option name="SKIP_NOOP_APK_INSTALLATIONS" value="true" />
      <option name="FORCE_STOP_RUNNING_APP" value="true" />
      <option name="DEBUGGER_TYPE" value="Java" />
      <option name="USE_LAST_SELECTED_DEVICE" value="false" />
      <option name="PREFERRED_AVD" value="" />
      <Java />
      <Profilers>
        <option name="ENABLE_ADVANCED_PROFILING" value="true" />
        <option name="GAPID_ENABLED" value="false" />
        <option name="GAPID_DISABLE_PCS" value="false" />
        <option name="SUPPORT_LIB_ENABLED" value="true" />
        <option name="INSTRUMENTATION_ENABLED" value="true" />
      </Profilers>
      <option name="DEEP_LINK" value="" />
      <option name="ACTIVITY_CLASS" value="" />
      <method />
    </configuration>
    <configuration default="true" type="AndroidTestRunConfigurationType" factoryName="Android Tests">
      <module name="" />
      <option name="TESTING_TYPE" value="0" />
      <option name="INSTRUMENTATION_RUNNER_CLASS" value="" />
      <option name="METHOD_NAME" value="" />
      <option name="CLASS_NAME" value="" />
      <option name="PACKAGE_NAME" value="" />
      <option name="EXTRA_OPTIONS" value="" />
      <option name="TARGET_SELECTION_MODE" value="SHOW_DIALOG" />
      <option name="PREFERRED_AVD" value="" />
      <option name="CLEAR_LOGCAT" value="false" />
      <option name="SHOW_LOGCAT_AUTOMATICALLY" value="false" />
      <option name="SKIP_NOOP_APK_INSTALLATIONS" value="true" />
      <option name="FORCE_STOP_RUNNING_APP" value="true" />
      <option name="DEBUGGER_TYPE" value="Java" />
      <option name="USE_LAST_SELECTED_DEVICE" value="false" />
      <option name="PREFERRED_AVD" value="" />
      <Java />
      <Profilers>
        <option name="ENABLE_ADVANCED_PROFILING" value="true" />
        <option name="GAPID_ENABLED" value="false" />
        <option name="GAPID_DISABLE_PCS" value="false" />
        <option name="SUPPORT_LIB_ENABLED" value="true" />
        <option name="INSTRUMENTATION_ENABLED" value="true" />
      </Profilers>
      <method />
    </configuration>
    <configuration default="true" type="Applet" factoryName="Applet">
      <option name="HTML_USED" value="false" />
      <option name="WIDTH" value="400" />
      <option name="HEIGHT" value="300" />
      <option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
      <module />
      <method />
    </configuration>
    <configuration default="true" type="Application" factoryName="Application">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
      <option name="MAIN_CLASS_NAME" />
      <option name="VM_PARAMETERS" />
      <option name="PROGRAM_PARAMETERS" />
      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
      <option name="ALTERNATIVE_JRE_PATH" />
      <option name="ENABLE_SWING_INSPECTOR" value="false" />
      <option name="ENV_VARIABLES" />
      <option name="PASS_PARENT_ENVS" value="true" />
      <module name="" />
      <envs />
      <method />
    </configuration>
    <configuration default="true" type="ArquillianJUnit" factoryName="" nameIsGenerated="true">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
      <module name="" />
      <option name="arquillianRunConfiguration">
        <value>
          <option name="containerStateName" value="" />
        </value>
      </option>
      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
      <option name="ALTERNATIVE_JRE_PATH" />
      <option name="PACKAGE_NAME" />
      <option name="MAIN_CLASS_NAME" />
      <option name="METHOD_NAME" />
      <option name="TEST_OBJECT" value="class" />
      <option name="VM_PARAMETERS" />
      <option name="PARAMETERS" />
      <option name="WORKING_DIRECTORY" />
      <option name="ENV_VARIABLES" />
      <option name="PASS_PARENT_ENVS" value="true" />
      <option name="TEST_SEARCH_SCOPE">
        <value defaultName="singleModule" />
      </option>
      <envs />
      <patterns />
      <method />
    </configuration>
    <configuration default="true" type="ArquillianTestNG" factoryName="">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
      <module name="" />
      <option name="arquillianRunConfiguration">
        <value>
          <option name="containerStateName" value="" />
        </value>
      </option>
      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
      <option name="ALTERNATIVE_JRE_PATH" />
      <option name="SUITE_NAME" />
      <option name="PACKAGE_NAME" />
      <option name="MAIN_CLASS_NAME" />
      <option name="METHOD_NAME" />
      <option name="GROUP_NAME" />
      <option name="TEST_OBJECT" value="CLASS" />
      <option name="VM_PARAMETERS" />
      <option name="PARAMETERS" />
      <option name="WORKING_DIRECTORY" />
      <option name="OUTPUT_DIRECTORY" />
      <option name="ANNOTATION_TYPE" />
      <option name="ENV_VARIABLES" />
      <option name="PASS_PARENT_ENVS" value="true" />
      <option name="TEST_SEARCH_SCOPE">
        <value defaultName="singleModule" />
      </option>
      <option name="USE_DEFAULT_REPORTERS" value="false" />
      <option name="PROPERTIES_FILE" />
      <envs />
      <properties />
      <listeners />
      <method />
    </configuration>
    <configuration default="true" type="Cold Fusion runner description" factoryName="Cold Fusion" custom_browser="" web_path="">
      <method />
    </configuration>
    <configuration default="true" type="CucumberJavaRunConfigurationType" factoryName="Cucumber java">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
      <option name="myFilePath" />
      <option name="GLUE" />
      <option name="myNameFilter" />
      <option name="myGeneratedName" />
      <option name="MAIN_CLASS_NAME" />
      <option name="VM_PARAMETERS" />
      <option name="PROGRAM_PARAMETERS" />
      <option name="WORKING_DIRECTORY" />
      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
      <option name="ALTERNATIVE_JRE_PATH" />
      <option name="ENABLE_SWING_INSPECTOR" value="false" />
      <option name="ENV_VARIABLES" />
      <option name="PASS_PARENT_ENVS" value="true" />
      <module name="" />
      <envs />
      <method />
    </configuration>
    <configuration default="true" type="FlashRunConfigurationType" factoryName="Flash App">
      <option name="BCName" value="" />
      <option name="IOSSimulatorSdkPath" value="" />
      <option name="adlOptions" value="" />
      <option name="airProgramParameters" value="" />
      <option name="appDescriptorForEmulator" value="Android" />
      <option name="debugTransport" value="USB" />
      <option name="debuggerSdkRaw" value="BC SDK" />
      <option name="emulator" value="NexusOne" />
      <option name="emulatorAdlOptions" value="" />
      <option name="fastPackaging" value="true" />
      <option name="fullScreenHeight" value="0" />
      <option name="fullScreenWidth" value="0" />
      <option name="launchUrl" value="false" />
      <option name="launcherParameters">
        <LauncherParameters>
          <option name="browser" value="a7bb68e0-33c0-4d6f-a81a-aac1fdb870c8" />
          <option name="launcherType" value="OSDefault" />
          <option name="newPlayerInstance" value="false" />
          <option name="playerPath" value="FlashPlayerDebugger.exe" />
        </LauncherParameters>
      </option>
      <option name="mobileRunTarget" value="Emulator" />
      <option name="moduleName" value="" />
      <option name="overriddenMainClass" value="" />
      <option name="overriddenOutputFileName" value="" />
      <option name="overrideMainClass" value="false" />
      <option name="runTrusted" value="true" />
      <option name="screenDpi" value="0" />
      <option name="screenHeight" value="0" />
      <option name="screenWidth" value="0" />
      <option name="url" value="http://" />
      <option name="usbDebugPort" value="7936" />
      <method />
    </configuration>
    <configuration default="true" type="FlexUnitRunConfigurationType" factoryName="FlexUnit" appDescriptorForEmulator="Android" class_name="" emulatorAdlOptions="" method_name="" package_name="" scope="Class">
      <option name="BCName" value="" />
      <option name="launcherParameters">
        <LauncherParameters>
          <option name="browser" value="a7bb68e0-33c0-4d6f-a81a-aac1fdb870c8" />
          <option name="launcherType" value="OSDefault" />
          <option name="newPlayerInstance" value="false" />
          <option name="playerPath" value="FlashPlayerDebugger.exe" />
        </LauncherParameters>
      </option>
      <option name="moduleName" value="" />
      <option name="trusted" value="true" />
      <method />
    </configuration>
    <configuration default="true" type="GradleRunConfiguration" factoryName="Gradle">
      <ExternalSystemSettings>
        <option name="executionName" />
        <option name="externalProjectPath" />
        <option name="externalSystemIdString" value="GRADLE" />
        <option name="scriptParameters" />
        <option name="taskDescriptions">
          <list />
        </option>
        <option name="taskNames">
          <list />
        </option>
        <option name="vmOptions" />
      </ExternalSystemSettings>
      <method />
    </configuration>
    <configuration default="true" type="GrailsRunConfigurationType" factoryName="Grails">
      <setting name="vmparams" value="" />
      <setting name="cmdLine" value="run-app" />
      <setting name="passParentEnv" value="true" />
      <setting name="launchBrowser" value="true" />
      <setting name="launchBrowserUrl" value="" />
      <setting name="depsClasspath" value="false" />
      <method />
    </configuration>
    <configuration default="true" type="JUnit" factoryName="JUnit">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
      <module name="" />
      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
      <option name="ALTERNATIVE_JRE_PATH" />
      <option name="PACKAGE_NAME" />
      <option name="MAIN_CLASS_NAME" />
      <option name="METHOD_NAME" />
      <option name="TEST_OBJECT" value="class" />
      <option name="VM_PARAMETERS" value="-ea" />
      <option name="PARAMETERS" />
      <option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
      <option name="ENV_VARIABLES" />
      <option name="PASS_PARENT_ENVS" value="true" />
      <option name="TEST_SEARCH_SCOPE">
        <value defaultName="singleModule" />
      </option>
      <envs />
      <patterns />
      <method />
    </configuration>
    <configuration default="true" type="JarApplication" factoryName="JAR Application">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
      <envs />
      <method />
    </configuration>
    <configuration default="true" type="Java Scratch" factoryName="Java Scratch">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
      <option name="SCRATCH_FILE_ID" value="0" />
      <option name="MAIN_CLASS_NAME" />
      <option name="VM_PARAMETERS" />
      <option name="PROGRAM_PARAMETERS" />
      <option name="WORKING_DIRECTORY" />
      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
      <option name="ALTERNATIVE_JRE_PATH" />
      <option name="ENABLE_SWING_INSPECTOR" value="false" />
      <option name="ENV_VARIABLES" />
      <option name="PASS_PARENT_ENVS" value="true" />
      <module name="" />
      <envs />
      <method />
    </configuration>
    <configuration default="true" type="JavaScriptTestRunnerProtractor" factoryName="Protractor">
      <config-file value="" />
      <node-interpreter value="project" />
      <envs />
      <method />
    </configuration>
    <configuration default="true" type="JavascriptDebugType" factoryName="JavaScript Debug">
      <method />
    </configuration>
    <configuration default="true" type="JetRunConfigurationType" factoryName="Kotlin">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
      <option name="MAIN_CLASS_NAME" />
      <option name="VM_PARAMETERS" />
      <option name="PROGRAM_PARAMETERS" />
      <option name="WORKING_DIRECTORY" />
      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
      <option name="ALTERNATIVE_JRE_PATH" />
      <option name="PASS_PARENT_ENVS" value="true" />
      <module name="przechat" />
      <envs />
      <method />
    </configuration>
    <configuration default="true" type="KotlinStandaloneScriptRunConfigurationType" factoryName="Kotlin script">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
      <option name="filePath" />
      <option name="vmParameters" />
      <option name="alternativeJrePath" />
      <option name="programParameters" />
      <option name="passParentEnvs" value="true" />
      <option name="workingDirectory" />
      <option name="isAlternativeJrePathEnabled" value="false" />
      <envs />
      <method />
    </configuration>
    <configuration default="true" type="Remote" factoryName="Remote">
      <option name="USE_SOCKET_TRANSPORT" value="true" />
      <option name="SERVER_MODE" value="false" />
      <option name="SHMEM_ADDRESS" value="javadebug" />
      <option name="HOST" value="localhost" />
      <option name="PORT" value="5005" />
      <method />
    </configuration>
    <configuration default="true" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
      <module name="" />
      <envs />
      <method />
    </configuration>
    <configuration default="true" type="TestNG" factoryName="TestNG">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
      <module name="" />
      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
      <option name="ALTERNATIVE_JRE_PATH" />
      <option name="SUITE_NAME" />
      <option name="PACKAGE_NAME" />
      <option name="MAIN_CLASS_NAME" />
      <option name="METHOD_NAME" />
      <option name="GROUP_NAME" />
      <option name="TEST_OBJECT" value="CLASS" />
      <option name="VM_PARAMETERS" value="-ea" />
      <option name="PARAMETERS" />
      <option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
      <option name="OUTPUT_DIRECTORY" />
      <option name="ANNOTATION_TYPE" />
      <option name="ENV_VARIABLES" />
      <option name="PASS_PARENT_ENVS" value="true" />
      <option name="TEST_SEARCH_SCOPE">
        <value defaultName="singleModule" />
      </option>
      <option name="USE_DEFAULT_REPORTERS" value="false" />
      <option name="PROPERTIES_FILE" />
      <envs />
      <properties />
      <listeners />
      <method />
    </configuration>
    <configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js">
      <node-interpreter>project</node-interpreter>
      <node-options />
      <gulpfile />
      <tasks />
      <arguments />
      <envs />
      <method />
    </configuration>
    <configuration default="true" type="js.build_tools.npm" factoryName="npm">
      <command value="run" />
      <scripts />
      <node-interpreter value="project" />
      <envs />
      <method />
    </configuration>
    <configuration default="true" type="osgi.bnd.run" factoryName="Run Launcher">
      <method />
    </configuration>
    <configuration default="true" type="osgi.bnd.run" factoryName="Test Launcher (JUnit)">
      <method />
    </configuration>
    <list size="1">
      <item index="0" class="java.lang.String" itemvalue="Application.Chat" />
    </list>
    <recent_temporary>
      <list size="1">
        <item index="0" class="java.lang.String" itemvalue="Application.Chat" />
      </list>
    </recent_temporary>
  </component>
  <component name="SbtLocalSettings">
    <option name="externalProjectsViewState">
      <projects_view />
    </option>
  </component>
  <component name="ShelveChangesManager" show_recycled="false">
    <option name="remove_strategy" value="false" />
  </component>
  <component name="TaskManager">
    <task active="true" id="Default" summary="Default task">
      <changelist id="06398586-209c-4077-aa71-0d8f1ecc8474" name="Default" comment="" />
      <created>1483746166825</created>
      <option name="number" value="Default" />
      <option name="presentableId" value="Default" />
      <updated>1483746166825</updated>
      <workItem from="1483976138831" duration="21016000" />
      <workItem from="1484040370298" duration="71000" />
      <workItem from="1484126302539" duration="7856000" />
      <workItem from="1484596256241" duration="620000" />
      <workItem from="1484687753232" duration="21348000" />
      <workItem from="1484902972940" duration="14558000" />
      <workItem from="1485000201509" duration="13500000" />
      <workItem from="1485016327866" duration="519000" />
    </task>
    <task id="LOCAL-00001" summary="initial work">
      <created>1483750676308</created>
      <option name="number" value="00001" />
      <option name="presentableId" value="LOCAL-00001" />
      <option name="project" value="LOCAL" />
      <updated>1483750676308</updated>
    </task>
    <task id="LOCAL-00002" summary="html and js stuff
">
      <created>1483750740827</created>
      <option name="number" value="00002" />
      <option name="presentableId" value="LOCAL-00002" />
      <option name="project" value="LOCAL" />
      <updated>1483750740827</updated>
    </task>
    <task id="LOCAL-00003" summary="started work on frontend
">
      <created>1483985839203</created>
      <option name="number" value="00003" />
      <option name="presentableId" value="LOCAL-00003" />
      <option name="project" value="LOCAL" />
      <updated>1483985839203</updated>
    </task>
    <task id="LOCAL-00004" summary="login and logout">
      <created>1483999707983</created>
      <option name="number" value="00004" />
      <option name="presentableId" value="LOCAL-00004" />
      <option name="project" value="LOCAL" />
      <updated>1483999707983</updated>
    </task>
    <task id="LOCAL-00005" summary="logout">
      <created>1484153491597</created>
      <option name="number" value="00005" />
      <option name="presentableId" value="LOCAL-00005" />
      <option name="project" value="LOCAL" />
      <updated>1484153491597</updated>
    </task>
    <task id="LOCAL-00006" summary="adding channels and writing messages in the channels">
      <created>1484696734260</created>
      <option name="number" value="00006" />
      <option name="presentableId" value="LOCAL-00006" />
      <option name="project" value="LOCAL" />
      <updated>1484696734260</updated>
    </task>
    <task id="LOCAL-00007" summary="joining channels">
      <created>1484700435639</created>
      <option name="number" value="00007" />
      <option name="presentableId" value="LOCAL-00007" />
      <option name="project" value="LOCAL" />
      <updated>1484700435639</updated>
    </task>
    <task id="LOCAL-00008" summary="joining channels which were left empty by their users">
      <created>1484780320774</created>
      <option name="number" value="00008" />
      <option name="presentableId" value="LOCAL-00008" />
      <option name="project" value="LOCAL" />
      <updated>1484780320774</updated>
    </task>
    <task id="LOCAL-00009" summary="sending messages is now parallel">
      <created>1484783137036</created>
      <option name="number" value="00009" />
      <option name="presentableId" value="LOCAL-00009" />
      <option name="project" value="LOCAL" />
      <updated>1484783137036</updated>
    </task>
    <task id="LOCAL-00010" summary="now works on observers
">
      <created>1484924017169</created>
      <option name="number" value="00010" />
      <option name="presentableId" value="LOCAL-00010" />
      <option name="project" value="LOCAL" />
      <updated>1484924017169</updated>
    </task>
    <task id="LOCAL-00011" summary="ResponseStrategy for bot, narrowcast method for Person">
      <created>1485004616178</created>
      <option name="number" value="00011" />
      <option name="presentableId" value="LOCAL-00011" />
      <option name="project" value="LOCAL" />
      <updated>1485004616178</updated>
    </task>
    <task id="LOCAL-00012" summary="Only WeatherResponse left to do">
      <created>1485010927491</created>
      <option name="number" value="00012" />
      <option name="presentableId" value="LOCAL-00012" />
      <option name="project" value="LOCAL" />
      <updated>1485010927491</updated>
    </task>
    <task id="LOCAL-00013" summary="WeatherStrategy works">
      <created>1485015111453</created>
      <option name="number" value="00013" />
      <option name="presentableId" value="LOCAL-00013" />
      <option name="project" value="LOCAL" />
      <updated>1485015111453</updated>
    </task>
    <option name="localTasksCounter" value="14" />
    <servers />
  </component>
  <component name="TimeTrackingManager">
    <option name="totallyTimeSpent" value="79488000" />
  </component>
  <component name="TodoView">
    <todo-panel id="selected-file">
      <is-autoscroll-to-source value="true" />
    </todo-panel>
    <todo-panel id="all">
      <are-packages-shown value="true" />
      <is-autoscroll-to-source value="true" />
    </todo-panel>
  </component>
  <component name="ToolWindowManager">
    <frame x="2391" y="-9" width="1618" height="1248" extended-state="6" />
    <editor active="true" />
    <layout>
      <window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
      <window_info id="Nl-Palette" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
      <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32711306" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
      <window_info id="Palette	" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
      <window_info id="Image Layers" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
      <window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32930845" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
      <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.3240324" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32930845" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
      <window_info id="Properties" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
      <window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
      <window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.150625" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
      <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
      <window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
      <window_info id="Theme Preview" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.39956093" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="true" content_ui="tabs" />
      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32930845" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
    </layout>
  </component>
  <component name="TypeScriptGeneratedFilesManager">
    <option name="processedProjectFiles" value="true" />
  </component>
  <component name="VcsContentAnnotationSettings">
    <option name="myLimit" value="2678400000" />
  </component>
  <component name="VcsManagerConfiguration">
    <MESSAGE value="initial work" />
    <MESSAGE value="html and js stuff
" />
    <MESSAGE value="started work on frontend
" />
    <MESSAGE value="login and logout" />
    <MESSAGE value="logout" />
    <MESSAGE value="adding channels and writing messages in the channels" />
    <MESSAGE value="joining channels" />
    <MESSAGE value="joining channels which were left empty by their users" />
    <MESSAGE value="sending messages is now parallel" />
    <MESSAGE value="now works on observers
" />
    <MESSAGE value="ResponseStrategy for bot, narrowcast method for Person" />
    <MESSAGE value="Only WeatherResponse left to do" />
    <MESSAGE value="WeatherStrategy works" />
    <option name="LAST_COMMIT_MESSAGE" value="WeatherStrategy works" />
  </component>
  <component name="XDebuggerManager">
    <breakpoint-manager>
      <option name="time" value="12" />
    </breakpoint-manager>
    <watches-manager />
  </component>
  <component name="antWorkspaceConfiguration">
    <option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
    <option name="FILTER_TARGETS" value="false" />
  </component>
  <component name="editorHistoryManager">
    <entry file="file://$PROJECT_DIR$/src/main/java/Channel.java">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="242">
          <caret line="16" column="35" lean-forward="false" selection-start-line="16" selection-start-column="35" selection-end-line="16" selection-end-column="35" />
          <folding>
            <element signature="method#update#0;class#Channel#0" expanded="false" />
            <element signature="method#isObservedBy#0;class#Channel#0" expanded="false" />
          </folding>
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/java/Bot.java">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="242">
          <caret line="15" column="0" lean-forward="false" selection-start-line="15" selection-start-column="0" selection-end-line="15" selection-end-column="48" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/java/WeatherStrategy.java">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="484">
          <caret line="22" column="50" lean-forward="false" selection-start-line="22" selection-start-column="50" selection-end-line="22" selection-end-column="50" />
          <folding>
            <element signature="imports" expanded="true" />
            <element signature="method#urlBuilder#0;class#WeatherStrategy#0" expanded="false" />
            <element signature="method#jsonFromURL#0;class#WeatherStrategy#0" expanded="false" />
          </folding>
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/pom.xml">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="792">
          <caret line="36" column="21" lean-forward="false" selection-start-line="36" selection-start-column="21" selection-end-line="36" selection-end-column="21" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/java/Person.java">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="1144">
          <caret line="64" column="44" lean-forward="false" selection-start-line="64" selection-start-column="44" selection-end-line="64" selection-end-column="44" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/java/SocketHandler.java">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="770">
          <caret line="42" column="40" lean-forward="false" selection-start-line="42" selection-start-column="33" selection-end-line="42" selection-end-column="40" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/java/Chat.java">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="0">
          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
          <folding>
            <element signature="method#logout#0;class#Chat#0" expanded="false" />
            <element signature="method#jsonChannelsList#0;class#Chat#0" expanded="false" />
            <element signature="method#jsonUsersList#0;class#Chat#0" expanded="false" />
          </folding>
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/java/Channel.java">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="946">
          <caret line="43" column="8" lean-forward="false" selection-start-line="43" selection-start-column="8" selection-end-line="43" selection-end-column="8" />
          <folding>
            <element signature="method#update#0;class#Channel#0" expanded="false" />
            <element signature="method#isObservedBy#0;class#Channel#0" expanded="false" />
          </folding>
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/java/Bot.java">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="0">
          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/java/WeatherStrategy.java">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="242">
          <caret line="12" column="25" lean-forward="true" selection-start-line="12" selection-start-column="25" selection-end-line="12" selection-end-column="25" />
          <folding>
            <element signature="imports" expanded="true" />
            <element signature="method#urlBuilder#0;class#WeatherStrategy#0" expanded="false" />
            <element signature="method#jsonFromURL#0;class#WeatherStrategy#0" expanded="false" />
          </folding>
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/java/Person.java">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="550">
          <caret line="34" column="60" lean-forward="false" selection-start-line="34" selection-start-column="60" selection-end-line="34" selection-end-column="60" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/java/SocketHandler.java">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="176">
          <caret line="13" column="22" lean-forward="true" selection-start-line="13" selection-start-column="22" selection-end-line="13" selection-end-column="22" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/resources/public/index.html">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="528">
          <caret line="24" column="24" lean-forward="false" selection-start-line="24" selection-start-column="24" selection-end-line="24" selection-end-column="24" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/java/Chat.java">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="990">
          <caret line="93" column="32" lean-forward="false" selection-start-line="93" selection-start-column="32" selection-end-line="93" selection-end-column="32" />
          <folding>
            <element signature="method#logout#0;class#Chat#0" expanded="false" />
            <element signature="method#jsonChannelsList#0;class#Chat#0" expanded="false" />
            <element signature="method#jsonUsersList#0;class#Chat#0" expanded="false" />
          </folding>
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/java/Chat.java">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="1870">
          <caret line="85" column="23" lean-forward="false" selection-start-line="85" selection-start-column="12" selection-end-line="85" selection-end-column="23" />
          <folding>
            <element signature="method#logout#0;class#Chat#0" expanded="false" />
            <element signature="method#jsonChannelsList#0;class#Chat#0" expanded="false" />
            <element signature="method#jsonUsersList#0;class#Chat#0" expanded="false" />
          </folding>
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/java/Channel.java">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="0">
          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
          <folding>
            <element signature="method#update#0;class#Channel#0" expanded="false" />
            <element signature="method#isObservedBy#0;class#Channel#0" expanded="false" />
          </folding>
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/java/IChannelBot.java" />
    <entry file="file://$PROJECT_DIR$/src/main/java/SocketHandler.java">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="704">
          <caret line="38" column="66" lean-forward="false" selection-start-line="38" selection-start-column="66" selection-end-line="38" selection-end-column="66" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/resources/public/index.html">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="528">
          <caret line="24" column="24" lean-forward="false" selection-start-line="24" selection-start-column="24" selection-end-line="24" selection-end-column="24" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/java/Chat.java">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="638">
          <caret line="29" column="34" lean-forward="false" selection-start-line="29" selection-start-column="34" selection-end-line="29" selection-end-column="34" />
          <folding>
            <element signature="method#logout#0;class#Chat#0" expanded="false" />
            <element signature="method#jsonChannelsList#0;class#Chat#0" expanded="false" />
            <element signature="method#jsonUsersList#0;class#Chat#0" expanded="false" />
          </folding>
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/resources/public/socket.js">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="0">
          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/resources/public/index.html">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="418">
          <caret line="19" column="19" lean-forward="false" selection-start-line="19" selection-start-column="19" selection-end-line="19" selection-end-column="19" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/java/Chat.java">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="522">
          <caret line="29" column="34" lean-forward="false" selection-start-line="29" selection-start-column="34" selection-end-line="29" selection-end-column="34" />
          <folding>
            <element signature="method#logout#0;class#Chat#0" expanded="false" />
            <element signature="method#jsonChannelsList#0;class#Chat#0" expanded="false" />
            <element signature="method#jsonUsersList#0;class#Chat#0" expanded="false" />
          </folding>
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/resources/public/socket.js">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="0">
          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/resources/public/index.html">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="342">
          <caret line="19" column="19" lean-forward="true" selection-start-line="19" selection-start-column="19" selection-end-line="19" selection-end-column="19" />
        </state>
      </provider>
    </entry>
    <entry file="jar://C:/Program Files/Java/jdk1.8.0_73/src.zip!/java/util/function/Consumer.java">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="95">
          <caret line="48" column="9" lean-forward="false" selection-start-line="48" selection-start-column="9" selection-end-line="48" selection-end-column="9" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/resources/public/index.html">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="528">
          <caret line="24" column="24" lean-forward="false" selection-start-line="24" selection-start-column="24" selection-end-line="24" selection-end-column="24" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/java/User.java" />
    <entry file="file://$PROJECT_DIR$/src/main/java/IChannelBot.java" />
    <entry file="file://$PROJECT_DIR$/src/main/resources/public/socket.js">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="38">
          <caret line="25" column="31" lean-forward="false" selection-start-line="25" selection-start-column="31" selection-end-line="25" selection-end-column="31" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/java/ResponseStrategy.java">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="132">
          <caret line="6" column="41" lean-forward="false" selection-start-line="6" selection-start-column="41" selection-end-line="6" selection-end-column="41" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/java/Util.java">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="308">
          <caret line="14" column="4" lean-forward="false" selection-start-line="14" selection-start-column="4" selection-end-line="14" selection-end-column="4" />
          <folding>
            <element signature="imports" expanded="false" />
            <element signature="method#jsonMessage#0;class#Util#0" expanded="false" />
          </folding>
        </state>
      </provider>
    </entry>
    <entry file="jar://$MAVEN_REPOSITORY$/org/eclipse/jetty/websocket/websocket-common/9.3.2.v20150730/websocket-common-9.3.2.v20150730.jar!/org/eclipse/jetty/websocket/common/WebSocketRemoteEndpoint.class">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="172">
          <caret line="348" column="7" lean-forward="true" selection-start-line="348" selection-start-column="7" selection-end-line="348" selection-end-column="7" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/java/Channel.java">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="242">
          <caret line="16" column="35" lean-forward="false" selection-start-line="16" selection-start-column="35" selection-end-line="16" selection-end-column="35" />
          <folding>
            <element signature="method#update#0;class#Channel#0" expanded="false" />
            <element signature="method#isObservedBy#0;class#Channel#0" expanded="false" />
          </folding>
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/java/Bot.java">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="242">
          <caret line="15" column="0" lean-forward="false" selection-start-line="15" selection-start-column="0" selection-end-line="15" selection-end-column="48" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/java/SocketHandler.java">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="770">
          <caret line="42" column="40" lean-forward="false" selection-start-line="42" selection-start-column="33" selection-end-line="42" selection-end-column="40" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/java/Person.java">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="1144">
          <caret line="64" column="44" lean-forward="false" selection-start-line="64" selection-start-column="44" selection-end-line="64" selection-end-column="44" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/pom.xml">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="792">
          <caret line="36" column="21" lean-forward="false" selection-start-line="36" selection-start-column="21" selection-end-line="36" selection-end-column="21" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/java/Chat.java">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="578">
          <caret line="46" column="38" lean-forward="true" selection-start-line="46" selection-start-column="38" selection-end-line="46" selection-end-column="38" />
          <folding>
            <element signature="method#logout#0;class#Chat#0" expanded="false" />
            <element signature="method#jsonChannelsList#0;class#Chat#0" expanded="false" />
            <element signature="method#jsonUsersList#0;class#Chat#0" expanded="false" />
          </folding>
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/main/java/WeatherStrategy.java">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="176">
          <caret line="30" column="20" lean-forward="false" selection-start-line="30" selection-start-column="20" selection-end-line="30" selection-end-column="20" />
          <folding>
            <element signature="imports" expanded="true" />
            <element signature="method#urlBuilder#0;class#WeatherStrategy#0" expanded="false" />
            <element signature="method#jsonFromURL#0;class#WeatherStrategy#0" expanded="false" />
          </folding>
        </state>
      </provider>
    </entry>
  </component>
  <component name="masterDetails">
    <states>
      <state key="ArtifactsStructureConfigurable.UI">
        <settings>
          <artifact-editor />
          <splitter-proportions>
            <option name="proportions">
              <list>
                <option value="0.2" />
              </list>
            </option>
          </splitter-proportions>
        </settings>
      </state>
      <state key="FacetStructureConfigurable.UI">
        <settings>
          <last-edited>No facets are configured</last-edited>
          <splitter-proportions>
            <option name="proportions">
              <list>
                <option value="0.2" />
              </list>
            </option>
          </splitter-proportions>
        </settings>
      </state>
      <state key="GlobalLibrariesConfigurable.UI">
        <settings>
          <splitter-proportions>
            <option name="proportions">
              <list>
                <option value="0.2" />
              </list>
            </option>
          </splitter-proportions>
        </settings>
      </state>
      <state key="JdkListConfigurable.UI">
        <settings>
          <last-edited>1.8</last-edited>
          <splitter-proportions>
            <option name="proportions">
              <list>
                <option value="0.2" />
              </list>
            </option>
          </splitter-proportions>
        </settings>
      </state>
      <state key="ModuleStructureConfigurable.UI">
        <settings>
          <last-edited>przechat</last-edited>
          <splitter-proportions>
            <option name="proportions">
              <list>
                <option value="0.2" />
                <option value="0.6" />
              </list>
            </option>
          </splitter-proportions>
        </settings>
      </state>
      <state key="ProjectJDKs.UI">
        <settings>
          <last-edited>1.8</last-edited>
          <splitter-proportions>
            <option name="proportions">
              <list>
                <option value="0.2" />
              </list>
            </option>
          </splitter-proportions>
        </settings>
      </state>
      <state key="ProjectLibrariesConfigurable.UI">
        <settings>
          <last-edited>Maven: args4j:args4j:2.0.16</last-edited>
          <splitter-proportions>
            <option name="proportions">
              <list>
                <option value="0.2" />
              </list>
            </option>
          </splitter-proportions>
        </settings>
      </state>
    </states>
  </component>
</project>