text:
angular.module('quassel')
.controller('NetworkController',
        ['$scope', '$networks', '$socket', '$er', '$reviver', '$modal', '$favico', '$alert', '$desktop', '$wfocus', '$ignore',
            function($scope, $networks, $socket, $er, $reviver, $modal, $favico, $alert, $desktop, $wfocus, $ignore) {
    $scope.networks = {};
    $scope.buffer = null;
    $scope.messages = [];

    var MT = require('message').Type;
    var MF = require('message').Flag;
    var IRCMessage = require('message').IRCMessage;
    var changesTimeout = [];
    var loadingMoreBacklogs = [];

    function createDayChangeMessage(msg, timestamp) {
        var message = new IRCMessage({
            id: msg.id,
            timestamp: timestamp/1000,
            type: MT.DayChange,
            flags: MF.ServerMsg,
            bufferInfo: {
                network: msg.networkId,
                id: msg.bufferId
            }
        });
        message.__s_done = true;
        message.sid = msg.id+timestamp;
        return message;
    }

    function updateMessages() {
        if ($scope.buffer) {
            var messages = $scope.buffer.messages.values();
            messages = applyIgnoreList(messages, $scope.buffer);
            $scope.messages = insertDayChangeMessages(messages);
        }
    }

    function applyIgnoreList(messages, buffer) {
        var i = 0, shouldDelete = false;
        for (; i<messages.length; i++) {
            shouldDelete = false;
            if (buffer.ignoreListRevision === $ignore.getRevision() && typeof messages[i].isIgnored === "boolean") {
                shouldDelete = messages[i].isIgnored;
            } else if ($ignore.getList().matches(messages[i], $networks.get())) {
                messages[i].isIgnored = true;
                shouldDelete = true;
            } else {
                messages[i].isIgnored = false;
            }
            if (shouldDelete) {
                messages.splice(i, 1);
                i--;
            }
        }
        buffer.ignoreListRevision = $ignore.getRevision();
        return messages;
    }

    function insertDayChangeMessages(messages) {
        var i, j, lastMessageDay, lastMessage, currentMessageDay, currentMessage,
            interval, today = new Date().setHours(0, 0, 0, 0);
        // Sort by id
        messages.sort(function(a, b){
            return a.id - b.id;
        });
        // Add missing DayChange messages between existing messages
        for (i=0; i<messages.length; i++) {
            messages[i].sid = messages[i].id;
            currentMessageDay = new Date(messages[i].datetime).setHours(0, 0, 0, 0);
            currentMessage = messages[i];
            if (i > 0) {
                interval = (currentMessageDay - lastMessageDay) / 86400000;
                for (j=interval; j>0; j--) {
                    messages.splice(i++, 0, createDayChangeMessage(lastMessage, currentMessageDay - ((j-1)*86400000)));
                }
            }
            lastMessageDay = currentMessageDay;
            lastMessage = currentMessage;
        }
        interval = (today - lastMessageDay) / 86400000;
        // Add missing DayChange messages after last message
        for (j=0; j<interval; j++) {
            messages.push(createDayChangeMessage(lastMessage, lastMessageDay + ((j+1)*86400000)));
        }
        return messages;
    }

    $er.setCallback(function(event) {
        $socket.emit('register', event);
    });

    // Internal
    $er.on('_init', function(next, data) {
        $scope.$apply(function(){
            $networks.set(data);
            $reviver.reviveAll($networks.get());
            $scope.networks = $networks.get().all();
        });
        next();
    });

    // Internal
    $er.on('network._init', function(next, networkId, data) {
        $reviver.reviveAll(data);
        $networks.get().set(networkId, data);
        $scope.networks = $networks.get().all();
        next();
    }).after('_init');

    $er.on('network.init', function(next, networkId) {
        next();
    }).after('network._init');

    $er.on('network.addbuffer', function(next, networkId, bufferId) {
        var network = $networks.get().get(networkId);
        network._buffers = network.getBufferHashMap().values();
        next();
    }).after('network.init');

    jsonpatch.reviver = $reviver;
    $er.on('change', function(next, networkId, change) {
        if (!jsonpatch.apply($networks.get().get(networkId), change)) {
            console.log('Patch failed!');
        } else {
            clearTimeout(changesTimeout[networkId]);
            changesTimeout[networkId] = setTimeout(function() {
                $scope.$apply();
            }, 10);
        }
        next();
    }).after('network.init');

    $er.on('buffer.backlog', function(next, bufferId, messageIds) {
        if (messageIds.length === 0) {
            // No more backlogs to receive for this buffer
            loadingMoreBacklogs[''+bufferId] = 'stop';
        } else if ($scope.buffer !== null) {
            loadingMoreBacklogs[''+bufferId] = false;
            if (bufferId === $scope.buffer.id) {
                updateMessages();
            }
        }
        next();
    });

    function setHighlight(buffer, value) {
        $scope.$apply(function(){
            buffer.highlight = value;
        });
        $scope.$emit('highlight');
    }

    function incFavico(buffer) {
        if (buffer.favico === undefined) buffer.favico = 0;
        buffer.favico++;
        $favico.more();
    }

    $er.on('buffer.lastseen', function(next, bufferId, messageId) {
        messageId = parseInt(messageId, 10);
        var buffer = $networks.get().findBuffer(bufferId);
        if (buffer !== null) {
            // Fix networkStatusBuffer sync from server
            if (buffer.isStatusBuffer()) {
                var network = $networks.get().get(buffer.network);
                network.setStatusBuffer(buffer);
            }

            var bufferLastMessage = buffer.getLastMessage();
            if (typeof bufferLastMessage !== 'undefined' && messageId < bufferLastMessage.id) {
                var found = buffer.messages.forEach(function(val, key){
                    if (key > messageId) {
                        if (buffer.isStatusBuffer()) {
                            if (!buffer.highlight) {
                                setHighlight(buffer, 1);
                            }
                            return false;
                        } else if (!buffer.isChannel()) {
                            if (buffer.highlight !== 2) {
                                setHighlight(buffer, 2);
                                incFavico(buffer);
                            }
                            return false;
                        } else if (typeof val.isHighlighted === 'function' && val.isHighlighted()) {
                            if (buffer.highlight !== 2) {
                                setHighlight(buffer, 2);
                                incFavico(buffer);
                            }
                            $desktop(buffer.name, val.content);
                            return false;
                        }
                    }
                    return true;
                }, undefined, true);
                if (!found) {
                    setHighlight(buffer, 3);
                }
            }
        }
        next();
    }).after('buffer.backlog');

    $er.on('buffer.markerline', function(next, bufferId, messageId) {
        var buffer = $networks.get().findBuffer(bufferId);
        if (buffer !== null) {
            buffer.markerline = parseInt(messageId, 10);
        }
        next();
    }).after('buffer.backlog');

    $er.on('buffer.message', function(next, bufferId, messageId) {
        var buffer = $networks.get().findBuffer(bufferId);
        if (buffer !== null) {
            $reviver.afterReviving(buffer.messages, function(obj){
                var message = obj.get(parseInt(messageId, 10));
                if ($scope.buffer !== null && buffer.id === $scope.buffer.id && $wfocus.isFocus()) {
                    $socket.emit('markBufferAsRead', bufferId, messageId);
                } else {
                    if (!$wfocus.isFocus() && $scope.buffer !== null && buffer.id === $scope.buffer.id) {
                        $wfocus.onNextFocus(function(){
                            $socket.emit('markBufferAsRead', bufferId, messageId);
                        });
                    }
                    if (buffer.isStatusBuffer()) {
                        if (!buffer.highlight) {
                            setHighlight(buffer, 1);
                        }
                    } else if (!buffer.isChannel()) {
                        if (buffer.highlight !== 2) {
                            setHighlight(buffer, 2);
                            incFavico(buffer);
                        }
                        $desktop(buffer.name, message.content);
                    } else {
                        $reviver.afterReviving(message, function(obj2){
                            if (obj2.isHighlighted()) {
                                if (buffer.highlight !== 2) {
                                    setHighlight(buffer, 2);
                                    incFavico(buffer);
                                }
                                $desktop(buffer.name, obj2.content);
                            } else if (obj2.type == MT.Plain || obj2.type == MT.Action) {
                                if (buffer.highlight !== 2 && buffer.highlight !== 1) {
                                    setHighlight(buffer, 1);
                                }
                            } else {
                                setHighlight(buffer, 3);
                            }
                        });
                    }
                }
            });
        }
        if ($scope.buffer === null) {
            $scope.messages = [];
        } else if (bufferId === $scope.buffer.id) {
            updateMessages();
        }
        next();
    }).after('network.addbuffer');

    $er.on('buffer.read', function(next, bufferId) {
        var buffer = $networks.get().findBuffer(bufferId);
        if (buffer !== null) {
            while(buffer.favico > 0) {
                $favico.less();
                buffer.favico--;
            }
            setHighlight(buffer, 0);
        }
        next();
    }).after('network.addbuffer');

    $er.on('buffer.remove', function(next, bufferId) {
        var networks = $networks.get().all();
        $scope.$apply(function(){
            for (var i=0; i<networks.length; i++) {
                networks[i]._buffers = networks[i].getBufferHashMap().values();
            }
        });
        next();
    });

    $er.on('buffer.merge', function(next, bufferId1, bufferId2) {
        var buffer1 = $networks.get().findBuffer(bufferId1);
        var network = $networks.get().get(buffer1.network);
        $scope.$apply(function(){
            network._buffers = network.getBufferHashMap().values();
        });
        next();
    });

    $er.on('ignorelist', function(next, list) {
        $reviver.reviveAll(list);
        $ignore.setList(list);
        $ignore.incRevision();
        $scope.$apply(function(){
            updateMessages();
        });
        next();
    });

    $scope.showBuffer = function(channel) {
        $scope.buffer = channel;
        updateMessages();
        var id = 0;
        channel.messages.forEach(function(val, key) {
            if (val.id > id) id = val.id;
        });
        $('#messagebox').focus();
        $socket.emit('markBufferAsRead', channel.id, id);
    };

    $scope.loadMore = function() {
        if ($scope.buffer !== null && (typeof loadingMoreBacklogs[''+$scope.buffer.id] === 'undefined' || loadingMoreBacklogs[''+$scope.buffer.id] === false) && loadingMoreBacklogs[''+$scope.buffer.id] !== 'stop') {
            var firstMessage = Math.min.apply(null, $scope.buffer.messages.keys());
            loadingMoreBacklogs[''+$scope.buffer.id] = true;
            if (firstMessage === Infinity) firstMessage = -1;
            $socket.emit('moreBacklogs', $scope.buffer.id, firstMessage);
            return true;
        }
        return false;
    };

    $scope.connect = function(network) {
        $socket.emit('requestConnectNetwork', network.networkId);
    };

    $scope.disconnect = function(network) {
        $socket.emit('requestDisconnectNetwork', network.networkId);
    };

    $scope.openModalJoinChannel = function(network) {
        var modalInstance = $modal.open({
            templateUrl: 'modalJoinChannel.html',
            controller: 'ModalJoinChannelInstanceCtrl',
            resolve: {
                network: function(){return network;}
            }
        });

        modalInstance.result.then(function (name) {
            $socket.emit('sendMessage', network.getStatusBuffer().id, '/join ' + name);
        });
    };

    $scope.channelPart = function(channel) {
        $socket.emit('sendMessage', channel.id, '/part');
    };

    $scope.channelJoin = function(channel) {
        $socket.emit('sendMessage', channel.id, '/join ' + channel.name);
    };

    $scope.channelDelete = function(channel) {
        $socket.emit('requestRemoveBuffer', channel.id);
    };

    $scope.onDropComplete = function(dragged, dropped) {
        if (dragged.isChannel() || dropped.isChannel()) {
            $alert.warn("Merging non-query buffers is not supported");
        } else if (dragged.network !== dropped.network) {
            $alert.warn("Merging buffers from different networks is not supported");
        } else if (dragged.id !== dropped.id) {
            if (window.confirm("Do you want to merge buffer '" + dragged.name + "' into buffer '" + dropped.name + "' ?")) {
                $socket.emit('requestMergeBuffersPermanently', dropped.id, dragged.id);
            }
        }
    };
}])
.controller('ModalJoinChannelInstanceCtrl', function ($scope, $modalInstance, network) {
    $scope.name = '';
    $scope.network = network;

    $scope.ok = function () {
        $modalInstance.close($scope.name);
    };

    $scope.cancel = function () {
        $modalInstance.dismiss('cancel');
    };
})
.controller('ConfigController', ['$scope', '$modal', '$theme', '$ignore', '$socket', '$config', function($scope, $modal, $theme, $ignore, $socket, $config) {
    // $scope.activeTheme is assigned in the theme directive
    $scope.getAllThemes = $theme.getAllThemes;
    $scope.ignoreList = $ignore.getList();
    $scope.displayIgnoreList = false;
    var modal, activeIndice = 0;

    $scope.setTheme = function(theme) {
        $scope.activeTheme = theme;
        $theme.setClientTheme(theme);
    };

    $scope.configTheme = function() {
        modal = $modal.open({
            templateUrl: 'modalChangeTheme.html',
            scope: $scope,
        });
    };

    $scope.configIgnoreList = function() {
        $scope.ignoreList = $ignore.getList();
        $scope.activeIndice = 0;
        modal = $modal.open({
            templateUrl: 'modalIgnoreList.html',
            scope: $scope,
        });
    };

    $scope.gsdisplayfullhostmask = function(newValue) {
        if (arguments.length > 0) {
            $config.set('displayfullhostmask', newValue);
        }
        return $config.get('displayfullhostmask');
    };

    $scope.configGeneral = function() {
        modal = $modal.open({
            templateUrl: 'modalGeneralConfig.html',
            scope: $scope,
        });
    };

    $scope.cancelIgnoreList = function() {
        $ignore.restoreSavedList();
        modal.dismiss('close');
    };

    $scope.saveIgnoreList = function() {
        $ignore.setList($scope.ignoreList);
        $ignore.save();
        modal.dismiss('close');
    };

    $scope.createIgnoreItem = function() {
        $ignore.createItem();
        $scope.ignoreList = $ignore.getList();
    };

    $scope.setActiveIndice = function(indice) {
        activeIndice = indice;
    };

    $scope.deleteSelectedIgnoreItem = function() {
        $ignore.deleteItem(activeIndice);
        $scope.ignoreList = $ignore.getList();
    };

    $socket.once('ignorelist', function(list) {
        $scope.$apply(function(){
            $scope.displayIgnoreList = true;
        });
    });
}])
.controller('SocketController', ['$scope', '$socket', '$er', '$timeout', '$window', '$alert', function($scope, $socket, $er, $timeout, $window, $alert) {
    $scope.disconnected = false;
    $scope.connecting = false;
    $scope.firstconnected = false;
    $scope.logged = false;
    $scope.host = "";
    $scope.port = "";
    $scope.user = "";
    $scope.password = "";
    $scope.alert = "";

    $scope.$watch('alert', function(newValue, oldValue) {
        if (newValue !== "") {
            $timeout(function(){
                $scope.alert = "";
            }, 8000);
        }
    });

    $socket.on('_error', function(e) {
        console.log(e);
        switch (e.errno) {
        case 'ECONNREFUSED':
            $scope.$apply(function(){
                $scope.alert = "Connection refused.";
            });
            break;
        default:
            $alert.error('Error received from server. See Javascript console for details.');
        }
    });

    $socket.on("connected", function() {
        console.log('CONNECTED');
        $scope.$apply(function(){
            $scope.disconnected = false;
            $scope.connecting = false;
            $scope.firstconnected = true;
        });
    });

    $socket.on('reconnect_attempt', function() {
        console.log('RECONNECTING');
        $scope.$apply(function(){
            $scope.connecting = true;
        });
    });

    $socket.on('reconnect_error', function() {
        console.log('RECONNECTING_ERROR');
        $scope.$apply(function(){
            $scope.connecting = false;
        });
    });

    $socket.on('reconnect_failed', function() {
        console.log('RECONNECTING_FAILED');
        $scope.$apply(function(){
            $scope.connecting = false;
            $scope.disconnected = true;
        });
    });

    $socket.on('loginfailed', function() {
        console.log('loginfailed');
        $scope.$apply(function(){
            $scope.alert = "Invalid username or password.";
        });
    });

    $socket.on('login', function() {
        console.log('Logged in');
        $scope.$apply(function(){
            $scope.logged = true;
        });
    });

    $socket.on('coreinfo', function(coreinfo) {
        if (coreinfo.CoreFeatures && coreinfo.CoreFeatures < 4) {
            $alert.error('Your quasselcore is not supported by quassel-webserver (version too old)');
        }
    });

    $socket.on('disconnect', function() {
        console.log('DISCONNECT');
        $er.clearReceived();
        $scope.$apply(function(){
            $scope.disconnected = true;
        });
    });

    $socket.on('reconnect', function() {
        console.log('RECONNECT');
        $er.redoCallbacks();
        if ($scope.logged) {
            $scope.login();
        }
        $scope.$apply(function(){
            $scope.disconnected = false;
        });
    });

    $scope.reload = function(){
        $window.location.reload();
    };

    $scope.login = function(){
        $socket.emit('credentials', {
            server: $scope.host,
            port: $scope.port,
            user: $scope.user,
            password: $scope.password
        });
    };
}])
.controller('InputController', ['$scope', '$socket', '$networks', function($scope, $socket, $networks) {
    var messagesHistory = [];
    var MT = require('message').Type;

    $scope.inputmessage = '';
    $scope.nick = null;

    var CircularBuffer = function(length){
        this.wpointer = 0;
        this.rpointer = 0;
        this.lrpointer = null;
        this.buffer = [];
        this.max = length;
    };

    CircularBuffer.prototype.push = function(item){
        this.buffer[this.wpointer] = item;
        this.wpointer = (this.max + this.wpointer + 1) % this.max;
        this.rpointer = this.wpointer;
    };

    CircularBuffer.prototype._previous = function(){
        if (this.buffer.length === this.max) {
            if (this.wpointer === this.max - 1) {
                if (this.rpointer === 0) return false;
            } else if (this.rpointer === this.wpointer && this.lrpointer !== null) {
                return false;
            }
        } else if (this.rpointer === 0) return false;
        this.lrpointer = this.rpointer;
        this.rpointer -= 1;
        if (this.rpointer < 0) this.rpointer = this.buffer.length - 1;
        return true;
    };

    CircularBuffer.prototype.previous = function(){
        if (this.buffer.length === 0) return null;
        if (this._previous()) {
            return this.buffer[this.rpointer];
        }
        return null;
    };

    CircularBuffer.prototype._next = function(key){
        var ret = true;
        if (this.buffer.length === this.max) {
            if (this.lrpointer === null) {
                ret = false;
            } else if (this.wpointer === 0) {
                if (this.rpointer === this.max - 1) ret = false;
            } else if (this.rpointer + 1 === this.wpointer) {
                ret = false;
            }
        } else if (this.rpointer === this.wpointer || this.rpointer === this.wpointer - 1) ret = false;
        if (!ret) {
            this.lrpointer = null;
            return false;
        }
        this.lrpointer = this.rpointer;
        this.rpointer += 1;
        if (this.rpointer >= this.buffer.length) this.rpointer = 0;
        return true;
    };

    CircularBuffer.prototype.next = function(){
        if (this.buffer.length === 0) return null;
        if (this._next()) {
            return this.buffer[this.rpointer];
        }
        return null;
    };

    CircularBuffer.prototype.clearReadPointer = function(){
        this.rpointer = this.wpointer - 1;
        if (this.rpointer < 0) this.rpointer = this.buffer.length - 1;
        this.lrpointer = null;
    };

    $scope.addMessageHistory = function(message, bufferId) {
        if (typeof messagesHistory[''+bufferId] === 'undefined') messagesHistory[''+bufferId] = new CircularBuffer(50);
        messagesHistory[''+bufferId].push(message);
    };

    $scope.clearMessageHistory = function(bufferId) {
        if (typeof messagesHistory[''+bufferId] !== 'undefined') {
            messagesHistory[''+bufferId].clearReadPointer();
        }
    };

    $scope.showPreviousMessage = function(bufferId) {
        if (typeof messagesHistory[''+bufferId] !== 'undefined') {
            var msg = messagesHistory[''+bufferId].previous();
            if (msg !== null) {
                $scope.$apply(function(){
                    $scope.inputmessage = msg;
                });
            }
        }
    };

    $scope.showNextMessage = function(bufferId) {
        if (typeof messagesHistory[''+bufferId] !== 'undefined') {
            var msg = messagesHistory[''+bufferId].next();
            if (msg !== null) {
                $scope.$apply(function(){
                    $scope.inputmessage = msg;
                });
            }
        }
    };

    $scope.sendMessage = function() {
        if (typeof $scope.buffer.id === "number" && $scope.inputmessage.length > 0) {
            $scope.clearMessageHistory($scope.buffer.id);
            $socket.emit('sendMessage', $scope.buffer.id, $scope.inputmessage);
            $scope.addMessageHistory($scope.inputmessage, $scope.buffer.id);
            $scope.inputmessage = '';
        }
    };

    $scope.$watch('buffer', function(newValue, oldValue) {
        var valid = false;
        if (newValue !== null) {
            if (typeof newValue.network === "number") {
                var network = $networks.get().get(newValue.network);
                if (network) {
                    $scope.nick = network.nick;
                    valid = true;
                }
            }
        }
        if (!valid) $scope.nick = null;
    });
}])
.controller('FilterController', ['$scope', function($scope) {
    var filters = [
        {label: 'Join', type: 32, value: false},
        {label: 'Part', type: 64, value: false},
        {label: 'Quit', type: 128, value: false},
        {label: 'Nick', type: 8, value: false},
        {label: 'Mode', type: 16, value: false},
        {label: 'Topic', type: 16384, value: false},
        {label: 'DayChange', type: 8192, value: false},
    ];
    var bufferFilters = [];
    $scope.currentFilter = [];
    $scope.currentFilter2 = {};
    $scope.defaultFilter = filters;

    function onCurrentFilterUpdate() {
        angular.forEach($scope.currentFilter, function(value, key) {
            $scope.currentFilter2[''+value.type] = value.value;
            if (value.label == 'Join') { // Also handle NetsplitJoin
                $scope.currentFilter2['32768'] = value.value;
            } else if (value.label == 'Quit') { // Also handle NetsplitQuit
                $scope.currentFilter2['65536'] = value.value;
            }
        });
    }

    if (localStorage.filter) {
        $scope.defaultFilter = JSON.parse(localStorage.filter);
    }

    $scope.$watch('buffer', function(newValue, oldValue) {
        if (oldValue !== null) {
            bufferFilters[''+oldValue.id] = angular.copy($scope.currentFilter);
        }
        if ((newValue !== null && oldValue === null) || (newValue !== null && oldValue !== null && newValue.id !== oldValue.id)) {
            if (typeof bufferFilters[''+newValue.id] === 'undefined') {
                bufferFilters[''+newValue.id] = angular.copy($scope.defaultFilter);
            }
            $scope.currentFilter = bufferFilters[''+newValue.id];
            onCurrentFilterUpdate();
        }
    });

    $scope.$watch('currentFilter', onCurrentFilterUpdate, true);

    $scope.setAsDefault = function() {
        $scope.defaultFilter = angular.copy($scope.currentFilter);
        localStorage.filter = JSON.stringify($scope.defaultFilter);
    };

    $scope.useDefault = function() {
        $scope.currentFilter = angular.copy($scope.defaultFilter);
        onCurrentFilterUpdate();
    };
}]);


Kiliveddi is the odd sounding name for a small town on the western bank of Seruvila. I say it is odd because it is perhaps the only place name in Sri Lanka that ends in 'veddi' (pronounced 'vetti'), meaning road in Tamil. It is at the beginning of the road that leads to Mutur.
Taking 'kili' to be a variation of 'kiri' meaning 'mountain' (S. giri), Kiliveddi means "the Giri Road". This makes it possible that the older name for Mutur, where this road ends, was 'Giri'. Mutur itself means "Ancient City' from T. 'mootu' = 'ancient' and T. 'oor' = 'puram' or city. This shows that Mutur could be the ancient city called 'Giri Nuvara'. It is a city that is mentioned in connection with building of the Seruvila Dagaba in the 2nd century B.C. The story about its construction is recorded in the Dhatuvamsa.
The Seruvila Dagaba was built by King Kavantissa shortly before his death in the first half of the 2nd century BC. The name Seru Vila means teals' lake. It comes from 'seruva', the Sinhala name for a very small duck, not much bigger than a domestic pigeon called Anas crecca in Latin, and 'teal' in English. This lake is situated close to the right bank of the Mahaveli River at the northern extremity of Ruhuna then ruled by King Kavantissa.
Beyond the left bank of this river was the Rajarata ruled by King Elara.
Although he was outspoken against going to war too soon, it was in preparation for such an eventuality that King Kavantissa began this campaign to strengthen the borders of his kingdom. The history of that period bears some similarity to the present situation in the country.
The details of these preparations for war, which the main chronicle failed to record, are given in a later work called the Dhatuvamsa. According to that document (which probably got the material from the ancient Ruhuna chronicle mentioned by Geiger), Kavantissa had got his own sister, Somadevi married to his brother-in-law Abhaya (a brother of Viharamahadevi from the lesser kingdom of Kelaniya) and sent him to reside at the outpost called Giri Nuvara 'near Seruvila'. Thereafter, he first sent his younger son Saddhatissa to increase food production, in view of the impending war, in the principality of Digamadulla near Ampara (then called Ambaragama). He sent the more recalcitrant elder son, Dutugemunu, to reside at far away Giri Nuvara, perhaps to keep him away from getting into trouble by his penchant for a hasty war with King Elara.
Dutugemunu did not take too long to create trouble at Giri Nuvara too, He made some insulting remarks at the inferiority of his uncle Abhaya's clan. Abhaya decided not to take this bait and start a quarrel. Instead he left Giri Nuvara and went to Seru Nuvara which is Toppur (Toppu + ur) or 'Grove City' in Tamil, situated at the northern end of Seruvila, ruled by Giri Abhaya's brother Siva.
Siva found a suitable site and helped Giri Abhaya to build a city there. Giri Abhaya named that city "Somapura" (or 'Soma Nuwara') after his queen Somadevi and continued to live there. As the queen was reluctant to go back to Giri Nuwara for religious worship, she built the Somawathi Caitya in consultation with Giri Abhaya, at a place "not too far or too close" to Somapura. Hastily built, the Somawathi Caitya could not have been a large shrine like the Seruvila Dagaba. Hence, its ruins are still to be traced. This story also shows us that Seru Nuvara was midway between Giri Nuvara and Somapura. It also confirms the fact that all three places were on the right bank side of the Mahaveli, for king Elara's kingdom began on its left bank.
It is to be noted that in recent times, Seruvila has acquired an alternative Tamil name as 'Allai'. This is a result of Tamil settlers finding it to be a good place to dig for 'allai' (Dioscorea pentaphylla), the favourite food of jungle people. The yam is called Katu-ala in Sinhala. It is from the second part of this name 'ala', which means 'yam,' that the Tamil name for it as "allay" is derived.
Giri Nuvara, the northern outpost of Ruhuna was on the right bank of a small branch of the Mahaveli called Kati Are or End Stream, which enters the sea in the Bay of Koti Ara (now Koddiyar Bay). Close to the river's mouth on the opposite side was Elara's Koti Nagara where the 'o' is long, (meaning, "End City" in Pali and 'Kelanaru' in Sinhala).
About six miles to the southwest of this ancient site of Giri Nuvara (present Mutur) is the Seruvila Dagaba.
This Dagaba with its own monastery on the western bank of Seruvila was built by King Kavantissa (about two and a half miles south of Seru Nuvara) when he visited the site with Queen Viharamahadevi. Before that, the king recalled Dutugeumunu back to Mahagama, probably to prevent him from creating further trouble at Giri Nuvara. But that impetuous prince quarrelled with his own father and fled to Kotmale. Therefore he was not in the capital to carry out the funeral rites when his father died. Hence that duty fell on the shoulders of his younger brother Saddhatissa, who finished the task and returned to Digamadulla with his mother Viharamahadevi and the state elephant Kandula, before Dutugemunu arrived at the scene. This paved the way for a war between the two brothers.
The death of King Kavantissa removes the last obstacle in the warlike path of Dutugemunu. However, before he died, Kavantissa did not fail to anticipate the possible conflict of interests between his two sons. Therefore, he summoned the ten generals and got them to promise that they would not support either side if there was a war between his sons. This foresight by the old king saved the bulk of the army to fight against the main enemy who was in occupation of the Rajarata.
The place where Giri Abhaya went to build the new city of Somapura is about six miles to the north of Seru Nuvara and close to the western bank of Koti Ara Bay. It is about four miles northwest of Mutur, sufficiently distant from the rude, new Lord of Giri Nuvara, and also a vantage point to monitor the movement of enemy ships to Trincomalee harbour. (The Tigers moved into that place after the ceasefire agreement was signed, for the same reason.) Its present name is Sampur, which is obviously a Tamilized version of the old name "Somapura." The other Somawathi Caitya in what was then Elara's territory on the left bank of the Mahaveli River is a large dagaba with its own history, but was built at a later period of time.


text:
Hannibal is an American psychological thriller–horror television series developed by Bryan Fuller for NBC. The series is based on characters and elements appearing in the novel Red Dragon by Thomas Harris and focuses on the budding relationship between FBI special investigator Will Graham and Dr. Hannibal Lecter, a forensic psychiatrist destined to become Graham's most cunning enemy. The series received a 13-episode order for its first season and, unlike most U.S. network shows, all future seasons will feature 13 episodes. David Slade executive produced and directed the first episode. The series premiered on NBC on April 4, 2013. On May 9, 2014, NBC renewed Hannibal for a third season, ... more on Wikipedia
lists about Hannibal
Every Food-Related Pun From 'Hannibal' 241 votes Dr. Hannibal Lecter is known for his renowned psychiatry practice, his elaborate dinner parties, and his affinity for long p...
The Most Appetizing Meals From 'Hannibal' You Might Actually Try 130 votes For three mouthwatering years, Bryan Fuller's Hannibal was a feast for the senses. The strength of its expressionistic appro...
The Best Episodes of Hannibal 260 votes There are so many good episodes of Hannibal, but which ones really stand out? Do you like "Mizumono" the best, or ...
Hannibal is ranked on...
#147 of 780 People who voted for Hannibal... also upvote Ian McKellen on The Best Actors Working Today also upvote Peter Dinklage on The Best Actors Working Today The Best TV Shows to Binge Watch 1.2M VOTES Bored? Not anymore! These are the best TV shows for binge-watching. The greatest television shows in the world are ranked he...
#105 of 219 The TV Shows with the Best Writing 66.7k VOTES What are the best written TV shows of all time? The Writers Guild of America (WGA) and TV Guide recently compiled its list o...
#10 of 400 People who voted for Hannibal... People under 30 are 2x more likely to vote for this People outside of the US are 2x more likely to vote for this TV Shows That Only Smart People Appreciate 1.2M VOTES Since about the early 2000s, TV audiences have been blessed with what many experts call The Golden Age of Television. In oth...
#315 of 1,176 People who voted for Hannibal... People outside of the US are 2x more likely to vote for this The Greatest TV Shows Of All Time 1.4M VOTES Choosing the best TV shows of all time means taking into account the best TV dramas, the best TV comedies, the best cartoons...
#124 of 281 People who voted for Hannibal... People outside of the US are 2x more likely to vote for this The Best Cult TV Shows of All Time 217.9k VOTES List of the best cult TV shows ever, ranked by their loyal fans. TV series that develop cult followings are known for their ...
#152 of 391 People who voted for Hannibal... People outside of the US are 2x more likely to vote for this The Best TV Shows of The Last 20 Years 1.5M VOTES This best TV show list represents the combined opinions of thousands of TV fans. Anyone can vote on this list of the best TV...
#64 of 252 People who voted for Hannibal... People outside of the US are 2x more likely to vote for this The Greatest TV Dramas of All Time 157.8k VOTES The greatest TV dramas of all time are the ones that make you feel connected to characters you will never meet in real life ...
#7 of 20 The Funniest Gag Reels from Serious TV Shows 1.3k VOTES It seems like every show on television today is very serious. Whether it's a courtroom drama, a CSI spinoff, or an HBO show ...
#91 of 168 The TV Shows Most Loved by Hipsters 28.4k VOTES List of TV shows hipsters love, currently running and from the past. Perhaps a TV-watching hipster seems like an oxymoron; a...
#11 of 20 20 Surprisingly Good Reboots And Remakes From The 2010s 4.8k VOTES Whenever fans hear about reboots and remakes, most of the responses can be negative. The best reboots 2010s, however, have s...
#116 of 147 The Greatest TV Title Sequences Ever 42.6k VOTES The greatest TV title sequences of all time are those memorable opening credits scenes from many of the best TV shows of all...
#8 of 13 Here's How Your Favorite Canceled TV Shows Were Really Supposed To End 51.1k VOTES There is a risk every TV lover takes when letting a new show into their hearts, and that is the chance that they will be can...
#14 of 70 The Creepiest Shows in TV History 49.6k VOTES Television loves to push the boundaries of what can be shown to a general audience. The medium has evolved from being a pl...
#77 of 128 Canceled Shows We'd Most Like to See as Movies 204.8k VOTES This list of canceled shows we'd like to see as movies includes a lot of huge cult favorites. Obviously this list isn't comp...
#2 of 17 17 Shows That Were Canceled On Major Cliffhangers 10.9k VOTES Some TV shows seem like they've been on forever. CSI survives by endlessly spinning off into city in the US, and The Si...
#5 of 73 People who voted for Hannibal... People under 30 are 2x more likely to vote for this also upvote Twilight Saga Franchise on The Most Overrated Movies of All Time Shows That May Be Just Too Scary For TV 31k VOTES The scariest TV shows manage to provide major frights with excellent drama. Unlike these excellent paranormal reality TV sho...
#145 of 154 The All-Time Greatest TV Pilots 230.4k VOTES The greatest TV pilots of all-time are single episodes of television that introduced us to what would soon be iconic charact...
#35 of 50 People who voted for Hannibal... People on the West Coast are 3x more likely to vote for this The Best NBC Dramas of All Time 14.3k VOTES NBC dramas are some of the most stimulating programs in television history. Dramas on NBC may be high-tech and filled with i...
#24 of 49 The Best Serial Dramas of the 21st Century 2k VOTES As opposed to most sitcoms, and even action TV shows, there's something about serial dramas that's so much more captivating....
#13 of 25 The Best TV Shows That Never Won A Single Emmy 1k VOTES Emmy snubs are a common complaint of television fans as there are some series with zero Emmys that just seem to have ro...
#33 of 48 TV Shows That Actually Deserve A Revival 17.4k VOTES It's never easy to say goodbye to a beloved television show. Whether it was on the air for years and got a grand sendoff, or...
#15 of 30 The Most Pretentious TV Shows Of All Time 2.9k VOTES When it comes to the most pretentious TV shows of all time, things tend to get tricky due to the subjective nature...
#26 of 63 The Most Anticipated Summer 2013 TV Shows 11.1k VOTES The most anticipated summer 2013 TV shows include several returning series that consistently attract millions of viewers, bu...
#30 of 51 The Best TV Dramas of 2013 7.4k VOTES Drama television shows often get a lot of attention from viewers and critics because they have a bit of everything. There is...
#34 of 149 The Best TV Shows of 2013 34.6k VOTES Best TV shows of 2013 include some of the greatest television shows of all time and serve to remind us that we are, in fact,...
#1 of 44 People who voted for Hannibal... also upvote Twilight Saga Franchise on The Most Overrated Movies of All Time also upvote Twilight Saga Franchise on The Worst Movies Of All Time The Best New TV Shows of 2013 12.4k VOTES The best new TV shows of 2013 include several dramas, a few comedies and a slew of original programming. Some of the shows l...
#23 of 63 The Best TV Shows That Were Canceled in 2014 16.9k VOTES This list of 2014's canceled shows will include all major television programs that get the ax over the course of the year on...
#14 of 22 Awesome Minimalist TV Posters That Reveal Less Is More 421 VOTES As the saying goes, less is more, and artist Shiraz Malik takes this to heart with his minimalist TV pos...
#33 of 45 What to Watch If You Love 'American Gods' 86 VOTES American Gods is a fantasy series depicting the ongoing struggle between the gods of the old world and those of the new ...
#18 of 124 People who voted for Hannibal... Men are 2x more likely to vote for this People outside of the US are 2x more likely to vote for this The Best TV Shows Based on Books 52.2k VOTES Fun fact: Game of Thrones isn't the only good TV show based on a book streaming on the airwaves! Though more and more people...
#31 of 110 People who voted for Hannibal... People on the West Coast are 2x more likely to vote for this The Best TV Shows On Amazon Prime 36.4k VOTES The best streaming Amazon Prime TV shows and television series feature many of the most memorable TV characters of all time ...
#73 of 109 The Best NBC TV Shows of All Time 36.4k VOTES List of popular NBC shows, ranked from best to worst. This list of the best NBC TV shows, which includes both current and ca...
#154 of 194 People who voted for Hannibal... People outside of the US are 2x more likely to vote for this What Shows Do You Most Want on Netflix Streaming? 194.4k VOTES What TV shows do you most want on Netflix streaming? While Netflix does offer some great streaming TV shows, and will likely...
#11 of 51 The Creepy-Crawliest Horror TV Shows Ever Made 7.8k VOTES When it comes to horror TV shows, they aren't worth much if they don't creep you out just from watching them. On the surface...
#10 of 113 The Best Horror TV Shows 24.9k VOTES The very best horror shows on television, ranked from best to worst. This list of the greatest horror shows also includes pi...
#449 of 476 The Best Television Shows of the 2000s 143.4k VOTES Some great TV shows came out of the 2000s, while some have even lived on. Here's a list of the best shows that aired from 20...
#50 of 189 The Best 2010s Drama Series 13.8k VOTES These are the best 2010s drama series, ranked from best to worst by user votes. Some 2010s TV drama series that fell in line...
#28 of 55 The Best TV Crime Dramas of the 2010s 1.8k VOTES These are the best 2010s crime drama TV shows, ranked by user votes. These 2010s crime drama series range from law enforceme...
#1 of 65 The Best Psychological Thriller TV Shows 36k VOTES The very best psychological thriller shows incorporate elements of suspense, drama, and intrigue to keep characters - and vi...
#127 of 146 The Best 2010s NBC Shows 4k VOTES These are the best 2010s NBC shows ranked by user votes. The 2010s was a great time for NBC television programs. Some of the...
#41 of 67 The Best Drama Shows On Amazon Prime 2.6k VOTES Shows come and go from Amazon Prime all the time, but there's always a great list of drama series to choose from. Whether it...
#8 of 53 The Best 2010s Cult TV Series 1.6k VOTES These are the best 2010s cult TV series, ranked from best to worst by your votes. In the decade that saw the rise of Peak TV...
14 Television Shows That Put Insane Amounts Of Effort Into Tiny Details 22.3k VIEWS Making a really good, detailed TV show requires a cast and crew to put in a massive amount of effort to ensure that the...
#11 of 42 The Best Horror TV Series of the 2010s 3k VOTES These are the best 2010s horror series ranked from best to worst by user votes. There are some great 2010s horror TV shows t...
#4 of 139 The Greatest Thriller Shows in TV History 34.3k VOTES These are the best nail-biting, edge-of-your-seat thriller shows on television, ranked from best to worst. This list of the ...
#18 of 59 The Most Exciting Thriller Series Ever Made 393 VOTES The best thriller TV shows ever aired are some of the most exciting and... well, thrilling series to watch on television, bu...
#38 of 65 The Best Suspense TV Shows 4.7k VOTES The very best suspense shows on television, ranked from best to worst. This list of the greatest suspense shows also include...
#6 of 47 The Best Thriller Horror Series 417 VOTES The best thriller horror shows pair the spooky pair ultimate frights with out-of-this-world tension. The best thriller horro...
#14 of 67 The Best 2010s NBC Dramas 2.6k VOTES These are the best 2010s NBC dramas, ranked from best to worst by your votes. Some good 2010s NBC drama shows follow crime-f...
What to Watch If You Love 'Mindhunter' 10.3k VIEWS Wondering what to watch now that you've bulldozed right through the latest season of Mindhunter? This list has you...
#14 of 51 The Most Exciting Horror Series Ever Made 1.6k VOTES The best horror TV shows ever aired are some of the most harrowing series to watch on television, but which are the most exc...
11 Times TV Shows Made Major Plot Decisions Based On The Fact They Didn't Have Enough Money 16.8k VIEWS Have you ever been totally engrossed in a TV show, then completely blindsided by an unexpected change? Have you ever wo...
#3 of 34 The Best TV Shows Set In Italy 75 VOTES Italy is a favorite setting for historical drama series, thanks to being the center of most of history's drama. English lang...
#17 of 47 The Creepiest Thriller Series Ever Made 266 VOTES Thrillers have often done exactly as the name describes: they thrill viewers with shocking twists and frightening situations...
#1 of 40 The Very Best Psychological Thriller Shows & Movies 333 VOTES When it comes to the genre of psychological thrillers, there are hundreds of choices in both film and television. There's so...
Best Tweets of All Time better call saul easter eggs famous nerd girls anime with op main character howard stern guests the cleaner cast japanese internment camps facts colgate university notable alumni pretty little liars episode 128 lifestories families in crisis

redpajama_set_name: RedPajamaCommonCrawl


text:
Q: Вывод на экран прямоугольного треугольника при помощи цикла while #include <iostream>

using std::cout;
using std::cin;
using std::endl;

void main()
{
setlocale(LC_ALL, "Russian");

int size, cont = 0, temp = 0;

cout << "Введите размер прямоугольного треугольника: "; cin >> size;

while (temp++ < size)
{

    while (cont < size)
    {
          if (cont < size) cout << '*'; else cout << ' ';

          cont++;
    }

    cout << endl;
}

cout << endl;
}

*

*Помогите пожалуйста с корректным выводом прямоугольного треугольника состоящего из символа '*', исключительно посредством while.

*Почему в моей программе вложенный цикл while выполняется только при первой итерации основного цикла while, а в последующих игнорируется?

A: Вероятно вы хотели добиться такого:
Введите размер прямоугольного треугольника: 5
*
**
***
****
*****

Тогда вы забыли по окончании каждой итерации внешнего цикла сбросить значение переменной cont. Подправил ваши циклы:
  while (temp++ < size)
  {
    while (cont++ < temp)
    {
      cout << '*';
    }
    cont = 0;
    cout << endl;
  }

redpajama_set_name: RedPajamaStackExchange


text:
10 Songs with Meaningful Personification
Personification is a great tool for songs – which is why it is a shame that more singers and songwriters don't use it. See how this literary device makes these songs that much better:
#1: Hummingbird Heartbeat (by Katy Perry)
When you give me the hummingbird heartbeat
Hummingbird heartbeat
You give me the hummingbird heartbeat
Spread my wings and make me fly
In many cases of personification, non-human objects are given a human quality. However, in this song we see a non-human quality, in this case a hummingbird heartbeat, given to a human. This type of personification is rare, but fits in with Katy Perry's style.
#2: Here Comes the Sun (by The Beatles)
Here comes the sun, here comes the sun
And I say it's all right
Little darling, it's been a long cold lonely winter
Little darling, it feels like years since it's been here
You've likely seen seasons personified by poets, but it isn't done all that often in song. Still, the best lyricists use it without allowing it to become clichéd. Winter is almost always personified as a villainous or sad season – and summer is always happy and the hero.
#3: Thriller (by Michael Jackson)
You try to scream but terror takes the sound before you make it
You start to freeze as horror looks you right between the eyes
You're paralyzed
'Cause this is thriller, thriller night
And no one's gonna save you from the beast about to strike.
The concept of "horror" is given lifelike qualities – which is what helped this song become the "go-to" song for every Halloween party for the last few decades. Don't go buy the video here – in the video, the "horror" is a zombie, but in just the song, it is just the craziness that is the "Thriller!"
#4: Can You Feel the Love Tonight (by Elton John)
There's a calm surrender to the rush of day
When the heat of a rolling wind can be turned away
An enchanted moment, and it sees me through
It's enough for this restless warrior just to be with you.
This beautiful Disney song is enough to bring out the sentiment in all of us – but it has personification that cannot be ignored. Throughout the entire song there are many layers of personification – this is just a sample!
#5: Careless Whisper (by George Michael)
I'm never gonna dance again
Guilty feet have got no rhythm
Though it's easy to pretend. I know you're not a fool…
…Time can never mend
The careless whisper of a good friend
To the heart and mind, ignorance is kind
There's no comfort in the truth, pain is all you'll find.
This song is filled with personification as well. Just this section of the song has more than most albums have: 'guilty feet', 'time' being expected to 'mend' mistakes, and 'ignorance' being 'kind.'
#6: Your Love is King (by Sade)
Your love is king
Crown you with my heart
Never need to part
Personification is in the name of this song. Giving an emotion or feeling like "love" a title such as "king" is an age-old technique that poets and lyricists have been using for centuries.
#7: Thank You (by Led Zeppelin)
And so today, my world it smiles
Your hand in mine, we walk the miles,
Thanks to you it will be done,
For you to me are the only one
"My world" isn't just one thing – it is many things. By giving it human qualities, and the ability to smile, Led Zeppelin paints a romantic picture that is hard to beat.
#8: Concrete Jungle (by Bob Marley)
No sun will shine in my day today
The high yellow moon won't come out to play
I said darkness has covered my light,
And has changed my day into night, yeah.
"The moon won't come out to play" shows just how filled with rebellion that many of Bob Marley's songs were. There is a reason he is considered a revolutionary.
#9: New York, New York (by Frank Sinatra)
These vagabond shoes
Are longing to stray
Right through the very heart of it
I want to wake up in a city
That doesn't sleep
"The city that doesn't sleep" is always New York – but you probably didn't know that the saying comes from a Frank Sinatra song. The saying gives human qualities (the ability to sleep) to New York.
#10: La Isla Bonita (by Madonna)
Tropical the island breeze
All of nature wild and free
This is where I long to be
Nature that is "wild and free" is personification and a metaphor. Madonna wants listeners to think of her as a type of natural woman who hangs out on La Isla Bonita.
10 Fun Examples of Personification in Poetry
Romeo and Juliet Personification
10 Best Ballad Pop Songs
10 Great Metaphors in R&B Songs
Examples of Allusions in Songs
Famous Songs with Alliteration
10 Best 1980's Ballad Songs
10 Different Themes in Taylor Swift Songs
Examples of Themes in Popular Songs
Examples of Figurative Language in Rap Songs
10 Best Latest English Ballad Songs
10 Great Metaphors from Popular Disney Songs
Examples Of Figurative Language In Popular Songs
Brevity is the Soul of Wit
The Fault, Dear Brutus
← Hamlet Act-I, Scene-II Study Guide
10 Fun Examples of Personification in Poetry →


text:
SFWA Names Kevin O'Donnell, Jr Service to SFWA Award Recipient: Lawrence M. Schoen
The Science Fiction and Fantasy Writers of America (SFWA) is pleased to announce that the Kevin O'Donnell, Jr. Service Award will be presented to Dr. Lawrence M. Schoen in Chicago at the Palmer House Hotel. Comedian John Hodgman will emcee the ceremony on the evening of May 14.
Dr. Lawrence M. Schoen has spent several years heading the election committee, working to find suitable candidates for the SFWA Board of Directors. His success is demonstrated by the number of candidates who have run for the board and the broad range of experience represented by the board members. In addition to his duties as the head of the election committee, he has often volunteered his time to help SFWA staff tables at conferences and makes himself generally available when help has been needed.
The Kevin O'Donnell, Jr. Service to SFWA Award recognizes a member of SFWA who best exemplifies the ideal of service to his or her fellow members. O'Donnell won the Service Award in 2005 the first time the Nebula Awards were presented in Chicago.
The Nebula Awards will be presented during the annual SFWA Nebula Conference, which will run from May 12-15 and feature a series of seminars and panel discussions on the craft and business of writing, SFWA's annual business meeting, and receptions.
The Nebula Awards recognize the best works of science fiction and fantasy published in the United States as selected by members of the Science Fiction and Fantasy Writers of America. The first Nebula Awards were presented in 1966.
In addition to the Nebula Awards, SFWA will present the Bradbury Award for Outstanding Dramatic Presentation, the Andre Norton Award for Outstanding Young Adult Science Fiction or Fantasy Book, the Kate Wilhelm Solstice Award, the Kevin O'Donnell, Jr. Service to SFWA Award, and the Damon Knight Memorial Grand Master Award.
For more information please email pr@sfwa.org.
Impostor syndrome. Thinking that your writing sucks. Lost in Submissionland. Overwhelmed by radioactive brain weasels.
The Writer's Book of Doubt contains practical advice and inspiration for dealing with the problems of the writing life.
David Lee Summers
David Lee Summers is an author whose writing spans a wide range of the imaginative from science fiction to steampunk to horror. When he's not writing, he operates telescopes at Kitt Peak National Observatory.


text:
https://www.bigrapidsnews.com/local-news/article/Ferris-Starbucks-closed-due-to-potential-COVID-19-15540988.php
Ferris Starbucks closed due to potential COVID-19 exposure
Facility reopened later the same day
By Catherine Sweeney
Published 2:54 pm EDT, Thursday, September 3, 2020
The Starbucks located at the Ferris University Center was closed Wednesday after a potential COVID-19 exposure. The facility was cleaned and able to reopen later that day. (Pioneer file photo)
BIG RAPIDS — The Starbucks located on the Ferris State University campus in Big Rapids was temporarily closed Wednesday due to a potential COVID-19 exposure.
In an email to the Pioneer, the university said it quickly enacted its response plan in accordance with Executive Order 161 when learning of the potential exposure.
The facility received a deep cleaning with guidance from the District Health Department No. 10, the U.S. Food and Drug Association and the Centers for Disease Control and Prevention.
The location was able to safely reopen later the same day.
The university said it will continue to take proactive measure to protect the health and safety of its staff, faculty and students.
Ferris partnership opens pathway to Doctor of Pharmacy degree


text:
Q: How is it possible to have two objects with the same name in Java? So I am learning java, and would still consider myself a beginner, only to get "noob-friendly" responses, and I am not stuck but just wondering how something is possible.
Here is my code:
import java.net.*;

public class HomePage {
String owner;
URL address;
String category;

public HomePage(String inOwner, String inAddress)
    throws MalformedURLException {

    owner = inOwner;
    address = new URL(inAddress);
}

public HomePage(String inOwner, String inAddress, String inCategory)
    throws MalformedURLException {

    this(inOwner, inAddress);
    category = inCategory;
}
}

Now my question is this: How is it possible to make two objects (HomePage) with the same name, and handling almost identical things (with the exception of inCategory in the second HomePage)?
In this section I am learning how to handle errors, so this class is used by another class which I understand. But I am not sure why I am able, and why I do, create two objects that are almost identical. Thanks!
For reference, here is the other class in the compilation:
(due to reputation and links in the code, I had to pastebin)

A:
almost identical things (with the exception of inCategory in the second HomePage)

Exactly as you say: they're not the same. A method's uniqueness is determined by its signature which consists of the method name and its arguments. You can have the same name as long as the arguments differ in type and/or amount.
Do note that you're talking about constructors here. The term you're looking for is overloading.
As you can see the second constructor uses this(inOwner, inAddress);. This calls the first constructor with the given arguments. It makes sure you don't have to copy code to reach the same effect. The reason for multiple constructors is to allow outside classes to create an object with different arguments.

A: You are not creating two objects. The two constructors with different parameters are simply used to initialize the fields in the object. An object is an instance of a class and everything in the class is part of the same object. This is an example of method overloading so don't get confused between methods and objects.

A: First of all.. They are not objects.
They are the constructors for the class HomePage.
It is possible to have multiple methods and multiple constructors with the same name. This process of using same names for multiple methods or constructors with different signature is referred to as OVERLOADING.
In your case, the constructors have a different signature
    public HomePage(String inOwner, String inAddress) throws MalformedURLException{...}
    public HomePage(String inOwner, String inAddress, String inCategory)throws MalformedURLException{..}

FYI : Please go through Overloading

A: You're not creating two objects that are identical.
Those two are constructors so you can simply calling one constructor to assist in constructing the actual object.
public HomePage(String inOwner, String inAddress) already has the code to set the properties owner and address so to avoid code duplication, you can just call it in public HomePage(String inOwner, String inAddress, String inCategory) to set those two properties then add the line category = inCategory; to initialize the category.

A: You are seeing an example of method overloading.
In this case it is the constructor that is being overloaded in order to make a type of HomePage using different sets of parameters (you can make an instance even if you don't know inCategory).


text:
Cemaga Tengah is een bestuurslaag in het regentschap Natuna van de provincie Riau-archipel, Indonesië. Cemaga Tengah telt 452 inwoners (volkstelling 2010).

Plaats in Riau-archipel (provincie)

redpajama_set_name: RedPajamaWikipedia


text:
Home / Newsroom / News Archive / China News / 2018
Vessel Returns from Scientific Expedition
China's first self-designed deep-sea exploration vessel returned to port on Sunday after completing a deep-sea geological examination in the Pacific.
The Ocean No. 6 returned to port in south China's Guangdong Province after spending 138 days conducting deep-sea surveys over about 30,000 km, according to Yang Shengxiong, chief engineer with Guangzhou Marine Geological Survey.
The surveys were conducted in areas with cobalt-bearing crusts in West Pacific. It found out about the conditions of the crusts in more than 30 areas, Yang said.
"Samples of the crusts more than 30-cm thick were fetched for the first time," Yang said.
The vessel also realized scale collection of cobalt-bearing crusts, while obtaining samples of microplastics along the sea routes in West Pacific. It also analyzed the amount, types and composition of microplastics in the sea, which laid a foundation for the international treatment of plastic waste in the sea.
It is the eighth deep-sea expedition of the vessel, which has conducted multiple tasks in the South China Sea, the Pacific and the waters around the Antarctic since 2009. (Xinhua)


* Receive a Harley-Davidson® whiskey decanter at no additional cost with a minimum purchase of $300 of Harley-Davidson® Motorclothes® merchandise, Genuine Motor Parts and Accessories, Screamin' Eagle® Performance Parts and/or official licensed products. Not valid on motorcycle purchases. Excludes FXRG apparel and Pink Label Collection. Items must be purchased within the same transaction. Limited to one gift per customer. While supplies last. Valid on online and in-store purchases from November 1, 2018–December 24, 2018. Cannot be redeemed for cash or cash equivalent. Offer not valid on previously purchased merchandise. Cannot be combined with any other offer, discount or promotion. Offer is subject to change without notice. Void where prohibited or restricted by law.


Descriptions: mercedes box locations start building wiring diagram within 1967 mercury cougar.
Descriptions: ford taurus sable fuel trouble shooting to within 1967 mercury cougar.
Descriptions: cat engine wiring diagram schematic electronic within 1967 mercury cougar.
Descriptions: ford tractor parts diagrams detailed schematics diagram within 1967 mercury cougar.
Descriptions: land rover box books of wiring diagram within 1967 mercury cougar.
Descriptions: ford powerstroke high pressure fuel pump know your parts within 1967 mercury cougar.
Descriptions: whats the best firing order within 1967 mercury cougar.
Descriptions: explorer timing chain diagram trusted wiring diagrams within 1967 mercury cougar.
Descriptions: ford wiring schematic tractor diagram diagrams of portal within 1967 mercury cougar.
Descriptions: wiring diagram dodge durango another diagrams within 1967 mercury cougar.
You almost certainly already know that 1967 mercury cougar is one of the trendiest topics on the internet at this time. Depending on the files we got from adwords, 1967 mercury cougar has very much search in google search engine. We think that 1967 mercury cougar give fresh ideas or references for visitors.
We have identified plenty of references concerning 1967 mercury cougar but we feel this is best. I we do hope you would also accept our thoughts. This image has been published by Maria Nieto and is in category tags segment. You may acquire this picture by hitting the save button or right click on the pic and choose save.
We hope whatever we share with you may be useful. If you want, youll be able to distribute this post to your companion, loved ones, community, or you can also book mark this page.


text:
Clive Davis: The Soundtrack of Our Lives (2017)
The life and successes of iconic music executive Clive Davis, from his miraculous start at Columbia Records through his trailblazing work at Arista Records and J Records, with a heavy dose of outstanding music sprinkled in between.
Chris Perkel
L.A. Reid
Jimmy Iovine
Kenneth Edmon...
Aretha Frankl...
Bruce Springs...
Carlos Santan...
Jennifer Huds...
Write a review for Clive Davis: The Soundtrack of Our Lives


text:
Decline in UK construction gathers pace in December: PMI
LONDON (Reuters) - The downturn in Britain's construction industry deepened in December, driven by the sharpest drop in civil engineering activity since 2009, a survey showed on Friday, underscoring the economy's frailties at the end of last year.
FILE PHOTO: People walk through the Canary Wharf financial district of London, Britain, December 7, 2018. REUTERS/Simon Dawson/File Photo
The IHS Markit/CIPS UK Construction Purchasing Managers' Index (PMI) fell to 44.4 from 45.3 in November, below all forecasts in a Reuters poll that had pointed to an improved reading of 45.9.
The survey was conducted between Dec. 5 and 20, straddling Prime Minister Boris Johnson's landslide election win on Dec. 12.
Investors are watching for signs that Johnson's victory has lifted worries about political stability in Britain.
For now, most gauges of the economy look downbeat.
IHS Markit, a data company, published a survey on Thursday showing output in Britain's manufacturing sector fell at the fastest rate in seven years in December.
It said its construction survey showed activity fell particularly hard in civil engineering and also declined in the housebuilding and commercial sectors.
"Brexit uncertainty and spending delays ahead of the general election were once again the most commonly cited factors highlighted by firms experiencing a drop in construction activity," Tim Moore, economics associate director at IHS Markit, said.
But some forward-looking figures pointed to better days ahead, he said.
The survey's gauge of business expectations hit a nine-month high in December.
"Survey respondents cited confidence that a more predictable domestic political landscape and clarity on Brexit could deliver a much-needed boost to clients' willingness to spend in 2020," Moore said.
- Detailed PMI data are only available under license from IHS Markit and customers need to apply for a license.
To subscribe to the full data, click on the link below: here
For further information, please email IHS Markit on economics@ihsmarkit.com
Reporting by Andy Bruce; Editing by Hugh Lawson


Here are some links that I hope will help you to plan the best wedding ever in Orlando, Florida.
Please contact me at any time if you have any additional questions. Thank you.
Getting Started – Please complete this form to begin the process of retaining my services for your event. I will send you a service agreement once I have the needed info.
Rehearsals – Click on this link to view or print out the PDF rehearsal guide. In most cases I am not needed to attend rehearsals as this link answers most questions that come up however please contact me for rates and availability in the event that you would like to add my rehearsal service to your wedding day.
Sunset Times – Check the Sunrise and Sunset times for your wedding day by clicking this link.
Please contact me by email if you would like to add your name and what you provide to this page. We are always looking for ways to help our clients find what they are looking for. TIP: Always ask the vendors if they are licensed and insured. Most venues will require it now.


Xmap Extension for Multicategories Released!
Couple of months ago some of you asked us about Multicategories support in Xmap. So we made it! It has the same functionality as the similar Xmap extension for Joomla! core content. But if you need some other options or find any bugs tell us in our Other Products Support Forum.
Multicategories Component for Joomla!1.6 Public Beta Released!
And of course we are open for all your suggestions and bugreports too. You can place them in our new Multicategories Component for Joomla!1.6 Forum.
Multicategories Component for Joomla!1.5 Version 1.0.9 Released!
pdf urls with "Add suffix to URLs" option turned on fixed (discussed on Multicategories Component for Joomla!1.5 Bugreports Forum).
Multicategories Component for Joomla!1.5 Version 1.0.8 Released!
JComments Support for Multicategories Component Added!
Multicategories Component for Joomla!1.5 Version 1.0.7 Released!


Another variation to this card would be to white emboss your sentiment before the watercolor so it is resisted.
I watercolored each one in the video and walked through the comparisons, with the exception of the Ranger distress crayons. I wasn't impressed with the results of these, so I didn't want to spend too much time on it. I just showed the panel for comparison purposes.
Anyway, enjoy and I'll be back next week with the last card!
I loved this bright and cheery card and the sentiment is one of my favourites.. Did you blend the Distress Crayons with water on your finger or just blend them with your dry finger? They didn't seem to blend all that well. I agree that the Gansai Tambi worked best for the background because the paints are rather opaque. I find the Peerless to be much more translucent and not so good for backgrounds. I was surprised that the Distress Ink was very much the same as the Peerless. Overall, it was quite an informative video. Thanks so much!
Great quick and easy card, Darlene! I like the Peerless Watercolors, but don't use them as often as I'd like.
This looks like a card you'd give to one of your daughters and I was just wondering…What do your girls do with all the cards your've given them over the years?
Great video! Really appreciated the use of different mediums. Thank you!
Great comparison, Darlene. Still…I find your photograph on this site so much more vibrant looking than when watching your video. Not complaining, just letting you know. do you think this would work with Zigs? ?
Yes, you could definitely use the Zigs. If you didn't use water, you could get really vibrant results.
Oh yeah, I forgot to say how much I was laughing when you had ink on your finger and touched the paper! I do that all the time…I was the one who said I get inky fingers with the misty in the forum…how I do it, I don't know but the ink finds me! I am getting better but still doing it sometimes! ?
Ditto Carol Mac. I too have a tendency to get inky fingers, so join the party!!!
Hi Andrea! Thought of you when I saw that Darlene's video this time was a bit longer. LOL! As for the Distress Crayons, I asked Darlene the same question. I just got my Distress Crayons and find that I get a better blend with a moist finger. I just put my finger in the water instead of a brush and use it in the same way.
Hi Andrea. I used a brush with water. I'll try your finger trick and see how it goes. Thanks for the tip!
This is a beautiful card. I love playing around with watercolors. I will be making a few of these and just waiting for the right sentiment to use. Very nice.


text:
Q: How to Inspect/Debug/View etc a request Generated by RestClient? I have a really weird problem where when i try to access a URL using RestClient it times out.  If i access the URL directly from the shell (using curl) it loads fine. I can get to other URLs, like google, via RestClient.
Furthermore, if i use Net::HTTP directly and send a GET request it goes through (!!).
I suspect that RestClient is not constructing the request appropriately but I'm not sure how to get RestClient to log out anything useful. I also have no idea how to access the request it's generating.
How can i see the complete http request that RestClient is making?
Below is some code outlining the problem:
irb(main):002:0> RestClient.log
=> nil
irb(main):003:0> RestClient.get my_bad_uri
RestClient::RequestTimeout: Request Timeout
    from /myapp/vendor/bundle/ruby/2.1.0/gems/rest-client-1.7.2/lib/restclient/request.rb:427:in `rescue in transmit'
    from /myapp/vendor/bundle/ruby/2.1.0/gems/rest-client-1.7.2/lib/restclient/request.rb:350:in `transmit'
    from /myapp/vendor/bundle/ruby/2.1.0/gems/rest-client-1.7.2/lib/restclient/request.rb:176:in `execute'
    from /myapp/vendor/bundle/ruby/2.1.0/gems/rest-client-1.7.2/lib/restclient/request.rb:41:in `execute'
    from /myapp/vendor/bundle/ruby/2.1.0/gems/rest-client-1.7.2/lib/restclient.rb:65:in `get'
    from (irb):3
    from /myapp/vendor/bundle/ruby/2.1.0/gems/railties-3.2.18/lib/rails/commands/console.rb:47:in `start'
    from /myapp/vendor/bundle/ruby/2.1.0/gems/railties-3.2.18/lib/rails/commands/console.rb:8:in `start'
    from /myapp/vendor/bundle/ruby/2.1.0/gems/railties-3.2.18/lib/rails/commands.rb:41:in `<top (required)>'
    from script/rails:33:in `require'
    from script/rails:33:in `<main>'

irb(main):004:0> RestClient.get "https://google.com" #google works
=> "<!doctype html><html itemscope=\"\" itemtype=\"http://schema.org/WebPage\" lang=\"en\"><head><meta content=\"Search the world's information, including webpages, images, videos and more. Google has many special features to help you find exactly what you're looking for.\" name=\"description\"><meta content=\"noodp\" name=\"robots\"><meta content=\"/images/google_favicon_128.png\" itemprop=\"image\"><title>Google</title><script>(function(){window.google={kEI:'WjDtU_GDMo_8oAT0woBw',kEXPI:'4791,17259,4000116,4003510,4007661,4008142,4009033,4010073,4010806,4010858,4010899,4011228,4011258,4011679,4012373,4012504,4013414,4013591,4013723,4013823,4013967,4013979,4014016,4014033,4014431,4014515,4014636,4014805,4014991,4015234,4015266,4015550,4015587,4015772,4016127,4016279,4016309,4016373,4016487,4016824,4016976,4017204,4017285,4017595,4017639,4

Thank you!

A: Since there are some lines of code referenced in the error logs, and a rescue block specifically (/lib/restclient/request.rb:427:in 'rescue in transmit'), you could open the gem and add some logging/puts/ statements in those methods to try and figure out where in the chain this is hanging up. It's not super surgical but it could get you headed in the right direction. If you are using bundler, I believe you can run bundle open restclient and then dig into the source code of the gem.


This site has been set up by the Ludlow Historical Research Group in order to bring to a wider audience the research carried out into the men of Ludlow and district who served in WW1. If you have any further information, letters or photographs that you feel should be added to the site please contact us.
We would especially like to hear from you if you have information or a photograph of anyone who is not listed so that we arrange to have a new page set up for them.
Below is a list of some of the of the local men who served in the Great War. Please click on any of the names to discover more about this episode in their life.


text:
Q: youtube-dl returning  I have a google compute engine server that I'm trying to run youtube-dl. The server is in US Iowa, it is running debian 9.11
This is the returned debug output:
youtube-dl -v https://youtu.be/tAfedFkfIiU

[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: [u'-v', u'https://youtu.be/tAfedFkfIiU']
[debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2019.11.22
[debug] Python version 2.7.13 (CPython) - Linux-4.9.0-11-amd64-x86_64-with-debian-9.11
[debug] exe versions: none
[debug] Proxy map: {}
[youtube] tAfedFkfIiU: Downloading webpage
[youtube] tAfedFkfIiU: Downloading video info webpage
[debug] Default format spec: best/bestvideo+bestaudio
[debug] Invoking downloader on u'https://r6---sn-5uaeznkz.googlevideo.com/videoplayback?expire=1574879492&ei=pGzeXZCILYKGigTm34n4DQ&ip=35.209.8.202&id=o-AGcuKL5f7Y7Du-FaWbBZhMaLIsfRZox4FQAYtAj_ujri&itag=22&source=youtube&requiressl=yes&mm=31%2C26&mn=sn-5uaeznkz%2Csn-tt1eln7e&ms=au%2Conr&mv=u&mvi=5&pl=16&mime=video%2Fmp4&ratebypass=yes&dur=1008.047&lmt=1574810711552172&mt=1574857344&fvip=6&fexp=23842630&beids=9466585&c=WEB&txp=5535432&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cmime%2Cratebypass%2Cdur%2Clmt&sig=ALgxI2wwRAIgF6wvUZ9ogFyTSHe6BQib6D9Ib4x8Q4_FDuMP70zbnkgCID5CAhySBvgNYaeH9kwkP-vkecmrngFh7b8NYtnIs8RN&lsparams=mm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl&lsig=AHylml4wRQIhAMn1kcyvqttNBRifOFDTcOYcyGbSttZb4lyxiOq2j0JcAiAwnqjvkIAnBIDPOdjIxlDkZvVHhgqL_kLPj_NQEMyvoA%3D%3D'
ERROR: unable to download video data: <urlopen error [Errno 101] Network is unreachable>
Traceback (most recent call last):
  File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 1925, in process_info
    success = dl(filename, info_dict)
  File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 1864, in dl
    return fd.download(name, info)
  File "/usr/local/bin/youtube-dl/youtube_dl/downloader/common.py", line 366, in download
    return self.real_download(filename, info_dict)
  File "/usr/local/bin/youtube-dl/youtube_dl/downloader/http.py", line 341, in real_download
    establish_connection()
  File "/usr/local/bin/youtube-dl/youtube_dl/downloader/http.py", line 109, in establish_connection
    ctx.data = self.ydl.urlopen(request)
  File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 2237, in urlopen
    return self._opener.open(req, timeout=self._socket_timeout)
  File "/usr/lib/python2.7/urllib2.py", line 429, in open
    response = self._open(req, data)
  File "/usr/lib/python2.7/urllib2.py", line 447, in _open
    '_open', req)
  File "/usr/lib/python2.7/urllib2.py", line 407, in _call_chain
    result = func(*args)
  File "/usr/local/bin/youtube-dl/youtube_dl/utils.py", line 2724, in https_open
    req, **kwargs)
  File "/usr/lib/python2.7/urllib2.py", line 1198, in do_open
    raise URLError(err)
URLError: <urlopen error [Errno 101] Network is unreachable>

Things I've tried:

*

*Allowed all network traffic through the google cloud firewall, both ingress and egress for all protocol types:

*Uninstalled curl and youtube-dl and reinstalled youtube-dl using wget

*Pinging youtube.com and google.com returns a good response.

*I can access my private web page from the server, so the ports are definitely working and theres definitely network access to everything outside the server.

*No network issues arose other than this.

*The direct link in the verbose output yields an "Access Denied" error, yet when trying youtube-dl locally, it returns a link that I can access and my friend with another IP can access, so it seems youtube-dl is returning non-accessible links? Unsure.

*I have not sent too many requests to get blacklisted, It didn't work from the start.

*The IP is ephemeral, it changes every time the server boots up (no static external IP set).

*Deleting and remaking the server instance from scratch does not fix the issue.

*The author of the library is adamant that it is a network issue on my side and not their side as seen in this github issue here: https://github.com/ytdl-org/youtube-dl/issues/23213

*I thought it might be that urllib2.urlopen is unaccessible in gcloud, but I ran a small python script that runs the method and it pinged google.com properly.

*I cannot wget the direct link provided in the verbose log output. It times out. This is the output log of wget with -v and curl with -v:

wget:
wget "https://r6---sn-5ualdn7y.googlevideo.com/videoplayback?expire=1575026099&ei=U6ngXd3cDImjtQfFkKHACA&ip=35.209.8.202&id=o-ALJhUmz-vDQxpGilTFwb8v02UpFXo3JFaLZVvTV7BcGV&itag=22&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-5ualdn7y%2Csn-5uaeznrz&ms=au%2Crdu&mv=u&mvi=5&pl=16&mime=video%2Fmp4&ratebypass=yes&dur=634.090&lmt=1574939877997808&mt=1575004312&fvip=2&fexp=23842630&beids=9466587&c=WEB&txp=6531432&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cmime%2Cratebypass%2Cdur%2Clmt&sig=ALgxI2wwRAIgWkUIL8i20_R0aDMs-UQmZq-EbHExzRFoP2ql6wqq3hoCIHKcxV7eU5sfcYxLzzVgJ1LgSoebvlUXnObwqDmzy7ym&lsparams=mm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl&lsig=AHylml4wRgIhANYw5qlL2ITIfsqPs5fveDiJljYvLCb8m4HLtoZDzTWmAiEA59uqA-cPmDAIgKRTYMXbxoegXat81xaZppigC76m7pQ%3D" -v
The name is too long, 708 chars total.
Trying to shorten...
New name is videoplayback?expire=1575026099&ei=U6ngXd3cDImjtQfFkKHACA&ip=35.209.8.202&id=o-ALJhUmz-vDQxpGilTFwb8v02UpFXo3JFaLZVvTV7BcGV&itag=22&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-5ualdn7y%2Csn-5uaeznrz&ms=au%2Crdu&mv=u&mvi=5&pl=16&mime=.
--2019-11-29 05:15:14--  https://r6---sn-5ualdn7y.googlevideo.com/videoplayback?expire=1575026099&ei=U6ngXd3cDImjtQfFkKHACA&ip=35.209.8.202&id=o-ALJhUmz-vDQxpGilTFwb8v02UpFXo3JFaLZVvTV7BcGV&itag=22&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-5ualdn7y%2Csn-5uaeznrz&ms=au%2Crdu&mv=u&mvi=5&pl=16&mime=video%2Fmp4&ratebypass=yes&dur=634.090&lmt=1574939877997808&mt=1575004312&fvip=2&fexp=23842630&beids=9466587&c=WEB&txp=6531432&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cmime%2Cratebypass%2Cdur%2Clmt&sig=ALgxI2wwRAIgWkUIL8i20_R0aDMs-UQmZq-EbHExzRFoP2ql6wqq3hoCIHKcxV7eU5sfcYxLzzVgJ1LgSoebvlUXnObwqDmzy7ym&lsparams=mm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl&lsig=AHylml4wRgIhANYw5qlL2ITIfsqPs5fveDiJljYvLCb8m4HLtoZDzTWmAiEA59uqA-cPmDAIgKRTYMXbxoegXat81xaZppigC76m7pQ%3D
Resolving r6---sn-5ualdn7y.googlevideo.com (r6---sn-5ualdn7y.googlevideo.com)... 173.194.147.204, 2607:f8b0:4002:35::c
Connecting to r6---sn-5ualdn7y.googlevideo.com (r6---sn-5ualdn7y.googlevideo.com)|173.194.147.204|:443... failed: Connection timed out.
Connecting to r6---sn-5ualdn7y.googlevideo.com (r6---sn-5ualdn7y.googlevideo.com)|2607:f8b0:4002:35::c|:443... failed: Network is unreachable.

curl:
curl -O -v https://r2---sn-hgn7rn7r.googlevideo.com/videoplayback?expire=1575026099&ei=U6ngXd3cDImjtQfFkKHACA&ip=35.209.8.202&id=o-ALJhUmz-vDQxpGilTFwb8v02UpFXo3JFaLZVvTV7BcGV&itag=22&source=youtube&requiressl=yes&mime=video/mp4&ratebypass=yes&dur=634.090&lmt=1574939877997808&fvip=2&fexp=9466587,23842630&beids=9466587&c=WEB&txp=6531432&sparams=expire,ei,ip,id,itag,source,requiressl,mime,ratebypass,dur,lmt&sig=ALgxI2wwRAIgWkUIL8i20_R0aDMs-UQmZq-EbHExzRFoP2ql6wqq3hoCIHKcxV7eU5sfcYxLzzVgJ1LgSoebvlUXnObwqDmzy7ym&rm=sn-5uakd7d&req_id=db99eec2ba1fa3ee&ipbypass=yes&redirect_counter=2&cm2rm=sn-uxgg5oxu-cxte7l&cms_redirect=yes&mip=213.204.90.117&mm=29&mn=sn-hgn7rn7r&ms=rdu&mt=1575004548&mv=m&mvi=1&pl=24&lsparams=ipbypass,mip,mm,mn,ms,mv,mvi,pl&lsig=AHylml4wRQIgK50gSfkEix6Q7q9n2GTk7GQOn6YEZ1NqiX4l8UwDHhQCIQDT4Q4KoFB6Dck1vQj0FO27LvNA8PMVyNJOaFMcU9yutg==
[1] 3670
[2] 3671
[3] 3672
[4] 3673
[5] 3674
[6] 3675
[7] 3676
[8] 3677
[9] 3678
[10] 3679
[11] 3680
[12] 3681
[13] 3682
[14] 3683
[15] 3684
[16] 3685
[17] 3686
[18] 3687
[19] 3688
[20] 3689
[21] 3690
[22] 3691
[23] 3692
[24] 3693
[25] 3694
[26] 3695
[27] 3696
[28] 3697
[29] 3698
[30] 3699
[31] 3700
[32] 3701
[33] 3702
[2]   Done                    ei=U6ngXd3cDImjtQfFkKHACA
[3]   Done                    ip=35.209.8.202
[4]   Done                    id=o-ALJhUmz-vDQxpGilTFwb8v02UpFXo3JFaLZVvTV7BcGV
[5]   Done                    itag=22
[6]   Done                    source=youtube
[7]   Done                    requiressl=yes
[8]   Done                    mime=video/mp4
[9]   Done                    ratebypass=yes
[10]   Done                    dur=634.090
[11]   Done                    lmt=1574939877997808
[12]   Done                    fvip=2
[13]   Done                    fexp=9466587,23842630
[14]   Done                    beids=9466587
[15]   Done                    c=WEB
[16]   Done                    txp=6531432
[17]   Done                    sparams=expire,ei,ip,id,itag,source,requiressl,mime,ratebypass,dur,lmt
[18]   Done                    sig=ALgxI2wwRAIgWkUIL8i20_R0aDMs-UQmZq-EbHExzRFoP2ql6wqq3hoCIHKcxV7eU5sfcYxLzzVgJ1LgSoebvlUXnObwqDmzy7ym
[19]   Done                    rm=sn-5uakd7d
[20]   Done                    req_id=db99eec2ba1fa3ee
[21]   Done                    ipbypass=yes
[22]   Done                    redirect_counter=2
   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 172.217.130.231...
* TCP_NODELAY set
*   Trying 2a00:1450:4006:9::7...
* TCP_NODELAY set
* Immediate connect fail for 2a00:1450:4006:9::7: Network is unreachable
*   Trying 2a00:1450:4006:9::7...
* TCP_NODELAY set
* Immediate connect fail for 2a00:1450:4006:9::7: Network is unreachable
  0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0*   Trying 2a00:1450:4006:9::7...
* TCP_NODELAY set
* Immediate connect fail for 2a00:1450:4006:9::7: Network is unreachable
  0     0    0     0    0     0      0      0 --:--:--  0:00:02 --:--:--     0*   Trying 2a00:1450:4006:9::7...
* TCP_NODELAY set
* Immediate connect fail for 2a00:1450:4006:9::7: Network is unreachable
  0     0    0     0    0     0      0      0 --:--:--  0:00:03 --:--:--     0*   Trying 2a00:1450:4006:9::7...
* TCP_NODELAY set
* Immediate connect fail for 2a00:1450:4006:9::7: Network is unreachable
  0     0    0     0    0     0      0      0 --:--:--  0:00:04 --:--:--     0*   Trying 2a00:1450:4006:9::7...
* TCP_NODELAY set
* Immediate connect fail for 2a00:1450:4006:9::7: Network is unreachable
  0     0    0     0    0     0      0      0 --:--:--  0:00:05 --:--:--     0*   Trying 2a00:1450:4006:9::7...
* TCP_NODELAY set
* Immediate connect fail for 2a00:1450:4006:9::7: Network is unreachable
  0     0    0     0    0     0      0      0 --:--:--  0:00:06 --:--:--     0*   Trying 2a00:1450:4006:9::7...
* TCP_NODELAY set
* Immediate connect fail for 2a00:1450:4006:9::7: Network is unreachable
  0     0    0     0    0     0      0      0 --:--:--  0:00:07 --:--:--     0*   Trying 2a00:1450:4006:9::7...
(continues)
* Immediate connect fail for 2a00:1450:4006:9::7: Network is unreachable
  0     0    0     0    0     0      0      0 --:--:--  0:02:09 --:--:--     0* connect to 172.217.130.231 port 443 failed: Connection timed out
*   Trying 2a00:1450:4006:9::7...
* TCP_NODELAY set
* Immediate connect fail for 2a00:1450:4006:9::7: Network is unreachable
*   Trying 2a00:1450:4006:9::7...
* TCP_NODELAY set
* Immediate connect fail for 2a00:1450:4006:9::7: Network is unreachable
* Failed to connect to r2---sn-hgn7rn7r.googlevideo.com port 443: Connection timed out
* Closing connection 0
curl: (7) Failed to connect to r2---sn-hgn7rn7r.googlevideo.com port 443: Connection timed out

*

*I have tried several youtube urls. Several different videos, with different formats of the URL.

*It is not a geo-blocking issue, the server is hosted in US Iowa.

*I've tried updating python to latest (3.5/6), same result.

I honestly ran out of ideas to debug this further.
EDIT: Something has sporadically changed, I can now access the direct link from the verbose output log in my local browser which I COULDN'T do before. I did not change anything since this question. Is my server's IP address being blocked? I never sent several requests to youtube to get black-listed so fast. Maybe it's not being blacklisted though, I still can't tell if it's a firewall issue. If it were a black-list issue, the verbose outputs of curl and wget would've returned an Access Denied error. So what's going on here?

A: Just add a "sudo" before it.
Worked for me with "sudo".


text:
House of Commons, Journals
Journal of the House of Commons: Volume 7, 1651-1660
House of Commons Journal Volume 7: 3 December 1652
Journal of the House of Commons: Volume 7, 1651-1660. Originally published by His Majesty's Stationery Office, London, 1802.
< Prev page | Next page >
Friday, the 3d of December, 1652.
Preservation of Timber.
Charge of the Forces.
Prayers.
ORDERED, That the Informations which have been given to the Council of State, touching Wastes and Spoils committed in the Forests, or otherwise, in the Timber and Woods belonging to the Commonwealth, be transmitted to the Committee appointed to consider of the Improvement of Parks: And that the same Powers, which were formerly in the Council of State, as to the Preservation of Timber and Woods, be transferred to that Committee; who have Power to receive and examine all Informations that are or shall be given touching that Business: And to take Care for the Preservation of the Timber and Woods, for the future; and to send for Persons and Witnesses: And Mr. Lechmere and Mr. Aldworth, are added to that Committee.
The House this Day resumed the Debate upon the Report made Yesterday, touching the Charge of the Forces in England, Scotland, and Ireland.
Resolved, That the House do sit To-morrow and Monday, only for this Time, notwithstanding the former Order.
Ordered, That this Debate be adjourned till To-morrow Morning; to be resumed the first Business; nothing to intervene.


Stunning floor lamp that is original in design and flare. Polished nickel base with a white linen shade. Holds two sets of lights. Under the shade, holds two 100 W "A" bulbs. In the middle base, holds two 7W candelabra bulbs.


I work one-on-one with clients to ensure they are making the right decisions about their future.
My industry knowledge and experience will help you make the right move or decision.
The clients I have worked with have made changes to grow and succeed.
Let's start planning for your future and continued success.
— Joe Bernardi, Owner at Bernardi Investment Services, Inc.


text:
New York State Investigates Racial Profiling Claims Against Macy's, Barneys
New York's Attorney General Eric Schneiderman has launched an investigation into Macy's (NYSE: M) and Barneys after four claims of racial profiling have emerged in the past week. Schneiderman is requiring the retailers to turn over information about their policies for detaining and questioning customers.
The four incidents each involved African Amercian shoppers who say they were unfairly detained or questioned after making expensive purchases in Macy's flagship Manhattan store and Barneys New York. Both department stores have spoken out about the accusations, stating that store employees were not involved in any of the incidents and that it was the NYPD who initiated contact with the African American shoppers.
On Tuesday, Oct. 29, Barneys chief executive Mark Lee and Macy's chief stores officer Peter Sachse received letters from the attorney general's office describing the four incidents as "troubling," reports Forbes. Both executives have until today, Oct. 30, to respond to the attorney general's request for an in-person meeting to be held Friday to discuss the allegations and provide a list of every shopper stopped and detained in the past 12 months, broken down by race. The retailers will also have to hand over details on their internal policies for contacting police with concerns about shoppers.
In addition to requests from the attorney general, Lee has also responded to an invitation from Rev. Al Sharpton to meet with the National Action Network in Harlem alongside representatives from the NAACP. The civil rights activist says that the private meeting, held yesterday, included a "candid" discussion about the racial profiling allegations.
-This Forbes article
-This Washington Post article
-This TIME article
Macy's, Barneys New York Respond to Racial Profiling Claims
Macy's To Open Its Stores On Thanksgiving Day
Macy's Shelves E-Commerce Expansion in China – For Now
Macy's Ship-From-Store Scales Up To 20,000-Plus Daily Orders
Amazon, Macy's Positive About Holiday Spending


text:
Kimberly-Clark SPECIAL SERIES
Access to Sanitation is a Human Right — And Women Entrepreneurs Are Making a Difference
More than 2 billion people worldwide do not have access to basic sanitation, denying them the basic human right of living their lives with dignity and holding them back from progress. Business leaders and change-makers around the world are developing solutions to expand access to sanitation in their communities, but they often need support to bring their models to scale.
In this series sponsored by Kimberly-Clark, we'll take a closer look at the Women in the Sanitation Economy Innovation Lab — which aims to cultivate and catalyze women-led, early-stage businesses that provide sanitation solutions to communities in need. Launched by Kimberly-Clark and its Kotex brand in partnership with the Toilet Board Coalition, the Innovation Lab recently completed its first pilot that included five startup businesses from Kenya, the U.S. and the U.K., along with Kimberly-Clark employees from around the globe who served as mentors to the female entrepreneurs.
As we move through this series, we'll take a closer look at the startups and their ideas, explore how mentor-mentee relationships helped move these models forward, and discuss lessons learned that can help to scale access to sanitation worldwide.
Making Lives Better Through Humanity-Centric Innovation
Words by Pete Dulcamara
This Engineer Once Lived Without Access to a Toilet — Now He's Helping Entrepreneurs Provide One for Others
Words by Kate Zerrenner
Lessons on Mentoring from a Sanitation Startup Accelerator for Women Entrepreneurs
How Mentorship Changed the Game for This Kenyan Entrepreneur
This Social Enterprise Wants to End Period Stigma and Empower Women and Girls
This New Innovation Lab Supports Women Entrepreneurs Who Solve Sanitation Challenges


text:
Bailey Pageant Bretagne caravan of the year
Caravan Times | 21st May 2008
Brits planning on investing in a new caravan could opt for the Bailey Caravans Pageant Bretagne Series 7, which scooped a prestigious gong recently.
The mobile home was awarded the title of Which Caravan Magazine Caravan of the Year for 2008.
Featuring a self-contained end bedroom capable of sleeping up to four people, the model also has a triple fixed bunk and parallel bed front saloon, which further extend its capacity.
This is combined with a three-seater L-shaped rear dinette and a central kitchen to create an ideal living space for exploring the country in.
Which Caravan Magazine editor Sally Pepper praised the unit, noting that it scored maximum points in two-fifths of the ten categories in a recent test conducted by the publication.
"Despite a price tag £2,000 less than its nearest rival in this test, Bailey's unbeatable Pageant Bretagne amassed a grand total of 90 points out of a possible 100," she said.
The caravan, which starts at less than £14,000, also scooped the gong for Best Family Van.
Earlier this year, it won recognition from Caravan Industry Magazine, which awarded it Tourer of the Year status.


There are NO CCR's on this parcel, and there are so few parcels without CCRs. So if you are looking for a nice parcel to build on with irrigation rights and the irrigation heads already there and featuring beautiful views of the Wyoming Range and Commissary Ridge, look no further. The views are beautiful. Located close to the Osmond Elementary School and a quick commute to Afton for shopping, hospital and entertainment. COME TAKE A LOOK!!