text:
#ifndef GODOT_MASTER_ATTACK_NODE_H
#define GODOT_MASTER_ATTACK_NODE_H

#include "action.h"
#include "../attack_area.h"

class AttackNode : public Action {
    GDCLASS(AttackNode, Action);
private:
    AttackArea  *attack_area;
    NodePath    attack_area_path;
    void    update_attack_area();
protected:
    void _notification(int p_notification);
    static void _bind_methods();
    virtual void _during_behavior(const Variant& target, Dictionary& env);
    virtual void _timeout_behavior(const Variant& target, Dictionary& env);
    virtual void _on_attack(const Variant& target, Dictionary& env) {}
    virtual void _reset(const Variant& target);
public:
    void set_attack_area_path(NodePath path);
    _FORCE_INLINE_ NodePath get_attack_area_path() {return attack_area_path;}

    _FORCE_INLINE_ AttackArea *get_attack_area() {return attack_area;}

    AttackNode() {attack_area=NULL;}
};

#endif //GODOT_MASTER_ATTACK_NODE_H


text:
package snapshotcommands

import (
	"github.com/rackspace/rack/commandoptions"
	"github.com/rackspace/rack/handler"
	"github.com/rackspace/rack/internal/github.com/codegangsta/cli"
	osSnapshots "github.com/rackspace/rack/internal/github.com/rackspace/gophercloud/openstack/blockstorage/v1/snapshots"
	"github.com/rackspace/rack/util"
)

var get = cli.Command{
	Name:        "get",
	Usage:       util.Usage(commandPrefix, "get", "[--id <snapshotID> | --name <snapshotName> | --stdin id]"),
	Description: "Gets a snapshot",
	Action:      actionGet,
	Flags:       commandoptions.CommandFlags(flagsGet, keysGet),
	BashComplete: func(c *cli.Context) {
		commandoptions.CompleteFlags(commandoptions.CommandFlags(flagsGet, keysGet))
	},
}

func flagsGet() []cli.Flag {
	return []cli.Flag{
		cli.StringFlag{
			Name:  "id",
			Usage: "[optional; required if `stdin` or `name` isn't provided] The ID of the snapshot.",
		},
		cli.StringFlag{
			Name:  "name",
			Usage: "[optional; required if `stdin` or `id` isn't provided] The name of the snapshot.",
		},
		cli.StringFlag{
			Name:  "stdin",
			Usage: "[optional; required if `id` or `name` isn't provided] The field being piped into STDIN. Valid values are: id",
		},
	}
}

var keysGet = []string{"ID", "Name", "Size", "Status", "VolumeID", "VolumeType", "SnapshotID", "Bootable", "Attachments", "Metadata"}

type paramsGet struct {
	snapshotID string
}

type commandGet handler.Command

func actionGet(c *cli.Context) {
	command := &commandGet{
		Ctx: &handler.Context{
			CLIContext: c,
		},
	}
	handler.Handle(command)
}

func (command *commandGet) Context() *handler.Context {
	return command.Ctx
}

func (command *commandGet) Keys() []string {
	return keysGet
}

func (command *commandGet) ServiceClientType() string {
	return serviceClientType
}

func (command *commandGet) HandleFlags(resource *handler.Resource) error {
	resource.Params = &paramsGet{}
	return nil
}

func (command *commandGet) HandlePipe(resource *handler.Resource, item string) error {
	resource.Params.(*paramsGet).snapshotID = item
	return nil
}

func (command *commandGet) HandleSingle(resource *handler.Resource) error {
	snapshotID, err := command.Ctx.IDOrName(osSnapshots.IDFromName)
	if err != nil {
		return err
	}
	resource.Params.(*paramsGet).snapshotID = snapshotID
	return nil
}

func (command *commandGet) Execute(resource *handler.Resource) {
	snapshotID := resource.Params.(*paramsGet).snapshotID
	snapshot, err := osSnapshots.Get(command.Ctx.ServiceClient, snapshotID).Extract()
	if err != nil {
		resource.Err = err
		return
	}
	resource.Result = snapshotSingle(snapshot)
}

func (command *commandGet) StdinField() string {
	return "id"
}

func (command *commandGet) PreCSV(resource *handler.Resource) {
	resource.FlattenMap("Metadata")
}

func (command *commandGet) PreTable(resource *handler.Resource) {
	command.PreCSV(resource)
}

redpajama_set_name: RedPajamaGithub


text:
package com.vladmihalcea.book.hpjp.hibernate.query.join.algorithm;

import com.vladmihalcea.book.hpjp.util.AbstractPostgreSQLIntegrationTest;
import org.hibernate.Session;
import org.junit.Test;

import jakarta.persistence.*;
import java.util.List;
import java.util.stream.Collectors;

import static org.junit.Assert.assertTrue;

/**
 * @author Vlad Mihalcea
 */
public class HashJoinSqlTest extends AbstractPostgreSQLIntegrationTest {

    @Override
    protected Class<?>[] entities() {
        return new Class<?>[]{
                Post.class,
                PostComment.class,
        };
    }

    /**
     * post
     * ----
     *
     * | id | title      |
     * |----|------------|
     * | 1  | Post no. 1 |
     * | 2  | Post no. 2 |
     * | .. | ..         |
     *
     * post_comment
     * -------------
     *
     * | id | review        | post_id |
     * |----|---------------|---------|
     * | 1  | Comment no. 1 | 1       |
     * | 2  | Comment no. 2 | 1       |
     * | .. | ..            | ..      |
     */
    @Override
    public void afterInit() {
        doInJPA(entityManager -> {
            int postCount = 1000;
            int postCommentCount = 10;
            long postCommentId = 1;

            for (long postId = 1; postId <= postCount; postId++) {
                Post post = new Post()
                    .setId(postId)
                    .setTitle(String.format("Post no. %d", postId));
                entityManager.persist(post);

                for (int i = 0; i < postCommentCount; i++) {
                    entityManager.persist(
                        new PostComment()
                            .setId(postCommentId++)
                            .setReview(String.format("Comment no. %d", postCommentId))
                            .setPost(post)
                    );
                }
            }
        });
        executeStatement("CREATE INDEX IDX_post_id ON post (id)");
        executeStatement("CREATE INDEX IDX_post_comment_id ON post_comment (id)");
        executeStatement("CREATE INDEX IDX_post_comment_post_id ON post_comment (post_id)");
        executeStatement("VACUUM ANALYZE");
    }

    /**
     * Get all posts with their associated post_comments.
     *
     * EXPLAIN ANALYZE
     * SELECT
     *    p.id AS post_id,
     *    p.title AS post_title,
     *    pc.review  AS review
     * FROM post p
     * INNER JOIN post_comment pc ON pc.post_id = p.id
     */
    @Test
    public void testInnerJoin() {
        doInJPA(entityManager -> {
            List<String> planLines = entityManager
            .unwrap(Session.class)
            .doReturningWork(connection -> selectColumnList(
                connection,
                "EXPLAIN ANALYZE\n" +
                "SELECT\n" +
                "   p.id AS post_id,\n" +
                "   p.title AS post_title,\n" +
                "   pc.review  AS review\n" +
                "FROM post p\n" +
                "INNER JOIN post_comment pc ON pc.post_id = p.id\n",
                String.class)
            );

            assertTrue(planLines.size() > 1);

            LOGGER.info("Execution plan: {}{}",
                System.lineSeparator(),
                planLines.stream().collect(Collectors.joining(System.lineSeparator()))
            );
        });
    }

    @Entity(name = "Post")
    @Table(name = "post")
    public static class Post {

        @Id
        private Long id;

        private String title;

        public Long getId() {
            return id;
        }

        public Post setId(Long id) {
            this.id = id;
            return this;
        }

        public String getTitle() {
            return title;
        }

        public Post setTitle(String title) {
            this.title = title;
            return this;
        }
    }

    @Entity(name = "PostComment")
    @Table(name = "post_comment")
    public static class PostComment {

        @Id
        private Long id;

        @ManyToOne(fetch = FetchType.LAZY)
        private Post post;

        private String review;

        public Long getId() {
            return id;
        }

        public PostComment setId(Long id) {
            this.id = id;
            return this;
        }

        public Post getPost() {
            return post;
        }

        public PostComment setPost(Post post) {
            this.post = post;
            return this;
        }

        public String getReview() {
            return review;
        }

        public PostComment setReview(String review) {
            this.review = review;
            return this;
        }
    }
}


text:
using System.Web;
using System.Web.Optimization;

namespace CalypsoWeb
{
    public class BundleConfig
    {
        // For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862
        public static void RegisterBundles(BundleCollection bundles)
        {
            bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                        "~/Scripts/jquery-{version}.js"));

            bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                        "~/Scripts/jquery.validate*"));

            // Use the development version of Modernizr to develop with and learn from. Then, when you're
            // ready for production, use the build tool at http://modernizr.com to pick only the tests you need.
            bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
                        "~/Scripts/modernizr-*"));

            bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
                      "~/Scripts/bootstrap.js",
                      "~/Scripts/respond.js"));

            bundles.Add(new ScriptBundle("~/bundles/json2html").Include(
                    "~/Scripts/json2html.js",
                    "~/Scripts/jquery.json2html.js"));

            bundles.Add(new ScriptBundle("~/bundles/calypso").Include(
                      "~/Scripts/Calypso.js"));

            bundles.Add(new StyleBundle("~/Content/css").Include(
                      "~/Content/bootstrap.css",
                      "~/Content/site.css"));
        }
    }
}


text:
@implementation RightTextFieldCell

- (void)awakeFromNib {
    // Initialization code
    [super awakeFromNib];
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
}

-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
           textFieldDelegate:(id<UITextFieldDelegate>)textFieldDelegate
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {

        self.tf_right = [[UITextField alloc]initWithFrame:CGRectMake(100, 0, DEVICE_WIDTH - 100 - 10, 55)];
        _tf_right.font = [UIFont systemFontOfSize:15];
        _tf_right.textAlignment = NSTextAlignmentRight;
        _tf_right.delegate = textFieldDelegate;
        _tf_right.clearButtonMode = UITextFieldViewModeWhileEditing;

        [self.contentView addSubview:_tf_right];
    }
    return self;
}

@end


text:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity;
using System.Linq;
using System.Threading.Tasks;
using System.Web;

namespace ExcelImporter.Models
{
    public class RegistryContext : DbContext
    {
        // You can add custom code to this file. Changes will not be overwritten.
        //
        // If you want Entity Framework to drop and regenerate your database
        // automatically whenever you change your model schema, please use data migrations.
        // For more information refer to the documentation:
        // http://msdn.microsoft.com/en-us/data/jj591621.aspx

        public RegistryContext()
            : base("name=RegistryContext")
        {
        }

        public System.Data.Entity.DbSet<ExcelImporter.Models.Person> People { get; set; }

        public System.Data.Entity.DbSet<ExcelImporter.Models.Device> Devices { get; set; }

        public System.Data.Entity.DbSet<ExcelImporter.Models.ImportedTable> ImportedTables { get; set; }

        public System.Data.Entity.DbSet<ExcelImporter.Models.ImportedFile> ImportedFiles { get; set; }

        public System.Data.Entity.DbSet<ExcelImporter.Models.HeaderPropertyMapping> HeaderPropertyMappings { get; set; }
    }
}


text:
typedef struct
{
    char *key;
    int value;
} node;

typedef struct
{
    int num_nodes;
    node *nodes[TABLE_SIZE];
} hash_table;

hash_table* init();
void destroy(hash_table *tab);

int add(hash_table *tab, char *key, int value);
int find(hash_table *tab, char *key);

int hash_func(char *key);

#endif


text: TeamCity infrastructure on Raspberry Pi 3


text:
ACCEPTED

#### According to
Index Fungorum

#### Published in
Syll. fung. (Abellini) 1: 162 (1882)

#### Original name
Sphaeria melastoma Fr.

### Remarks
null


text:
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title>Deployment - Category - Welcome to Thai's Home</title>
        <link>https://hpthai7.github.io/categories/deployment/</link>
        <description>Deployment - Category - Welcome to Thai's Home</description>
        <generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>th3ho@yahoo.com (Thai Ho)</managingEditor>
            <webMaster>th3ho@yahoo.com (Thai Ho)</webMaster><copyright>This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.</copyright><lastBuildDate>Thu, 23 Apr 2020 00:00:00 +0000</lastBuildDate><atom:link href="https://hpthai7.github.io/categories/deployment/" rel="self" type="application/rss+xml" /><item>
    <title>Git Flows for Management of Software Projects</title>
    <link>https://hpthai7.github.io/git-flows-overview/</link>
    <pubDate>Thu, 23 Apr 2020 00:00:00 +0000</pubDate>
    <author>Author</author>
    <guid>https://hpthai7.github.io/git-flows-overview/</guid>
    <description><![CDATA[This article covers the different git flows tailored for software projects in professional environment. Each flow is adapted to the context of project scale, the number of developers and the expected delivery cycles. Here we feature Git Flow, Github Flow, Gitlab Flow
Git Flow Github Flow Gitlab Flow Refence  Gitlab tutorial Stackoverflow Semantic release   ]]></description>
</item><item>
    <title>Kubernetes Cheat Sheet</title>
    <link>https://hpthai7.github.io/kubernetes-cheat-sheet/</link>
    <pubDate>Mon, 13 Apr 2020 00:00:00 +0000</pubDate>
    <author>Author</author>
    <guid>https://hpthai7.github.io/kubernetes-cheat-sheet/</guid>
    <description><![CDATA[What is Kubernetes Kubernetes is a sophisticated tool for the orchestration of containers in mass deployment. It provides an effective ways to define the software components, resources and deploy them in a controllable and effective manner. The strongest points of Kubernetes is:
  The abstraction of infrastructure layer to deployment layer. This allows developers and administrators concentrate on the development stage and less worry about the management of the underlying hardware settings.]]></description>
</item><item>
    <title>Virtualization vs Containerization</title>
    <link>https://hpthai7.github.io/virtualization-vs-containerization/</link>
    <pubDate>Mon, 13 Apr 2020 00:00:00 +0000</pubDate>
    <author>Author</author>
    <guid>https://hpthai7.github.io/virtualization-vs-containerization/</guid>
    <description><![CDATA[Semantic versioning The versioning of docker images, as per Docker Hub, does not respect the rules of semantic versioning. A single image can share different tags as demonstrated in the photo. The tags feature a Major release, a Major.minor release, and a Major.minor.patch release.]]></description>
</item></channel>
</rss>


text:
/* vim: set expandtab ts=4 sw=4: */
/*
 * You may redistribute this program and/or modify it under the terms of
 * the GNU General Public License as published by the Free Software Foundation,
 * either version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
#ifndef SwitchHeader_H
#define SwitchHeader_H

#include "util/Assert.h"
#include "util/Endian.h"
#include "util/version/Version.h"

#include <stdint.h>

/**
 * The header which switches use to decide where to route traffic.
 *
 *                     1               2               3
 *     0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
 *    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 *  0 |                                                               |
 *    +                         Switch Label                          +
 *  4 |                                                               |
 *    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 *  8 |   Congest   |S|                  Priority                     |
 *    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 *
 * Versions <= 7 byte number 8 is message type but the only 2 defined types were 0 (data)
 * and 1 (control).
 * Versions >= 8, byte number 8 is a congestion indicator but the lowest bit is a flag (S)
 * indicating that errors caused by this packet should be suppressed. Obviously an error message
 * should not trigger another error message so error messages will have the flag set.
 * Conveinently, all pre v8 versions will set the flag on every ctrl packet (including all errors).
 * Versions >= 8 will set congest to non-zero as a way to tell themselves apart from versions < 8
 * Versions < 8 are treating the byte as a number so all bits of congest will be zero.
 */
#ifdef Version_7_COMPAT
    #define SwitchHeader_TYPE_DATA 0
    #define SwitchHeader_TYPE_CONTROL 1
#endif

#pragma pack(push)
#pragma pack(4)
struct SwitchHeader
{
    /** The label, this is how the switch decides where to send the packet. Big Endian. */
    uint64_t label_be;

    /**
     * Top 7 bits: congest
     * Next bit: suppressErrors
     *
     * Bottom 24 bits: priority
     * Anti-flooding, this is a big endian uint32_t with the high 8 bits cut off.
     *
     * This entire number is in big endian encoding.
     */
    uint32_t lowBits_be;
};
#define SwitchHeader_SIZE 12
Assert_compileTime(sizeof(struct SwitchHeader) == SwitchHeader_SIZE);
#pragma pack(pop)

static inline uint32_t SwitchHeader_getCongestion(const struct SwitchHeader* header)
{
    return Endian_bigEndianToHost32(header->lowBits_be) >> 25;
}

static inline void SwitchHeader_setCongestion(struct SwitchHeader* header, uint32_t cong)
{
    Assert_true(cong <= 127);
    if (!cong) { cong++; }
    header->lowBits_be &= Endian_hostToBigEndian32( ~0xfe000000 );
    header->lowBits_be |= Endian_hostToBigEndian32( cong << 25 );
}

static inline uint32_t SwitchHeader_getPriority(const struct SwitchHeader* header)
{
    return Endian_bigEndianToHost32(header->lowBits_be) & ((1 << 24) - 1);
}

static inline void SwitchHeader_setPriority(struct SwitchHeader* header, uint32_t priority)
{
    Assert_true(priority <= ((1 << 24) - 1) );
    header->lowBits_be &= Endian_hostToBigEndian32( ~((1 << 24) - 1) );
    header->lowBits_be |= Endian_hostToBigEndian32( priority & ((1 << 24) - 1) );
}

static inline bool SwitchHeader_getSuppressErrors(const struct SwitchHeader* header)
{
    return !!( Endian_hostToBigEndian32(1<<24) & header->lowBits_be );
}

static inline void SwitchHeader_setSuppressErrors(struct SwitchHeader* header, bool suppress)
{
    if (suppress) {
        header->lowBits_be |= Endian_hostToBigEndian32(1<<24);
    } else {
        header->lowBits_be &= Endian_hostToBigEndian32(~(1<<24));
    }
}

#ifdef Version_7_COMPAT
static inline void SwitchHeader_setPriorityAndMessageType(struct SwitchHeader* header,
                                                          const uint32_t priority,
                                                          const uint32_t messageType)
{
    Assert_true(messageType < 2);
    header->lowBits_be =
        Endian_hostToBigEndian32( (priority & ((1 << 24) - 1)) | messageType << 24 );
}
static inline uint32_t SwitchHeader_getMessageType(struct SwitchHeader* header)
{
    return Endian_bigEndianToHost32(header->lowBits_be) >> 24;
}
#endif

#endif


text:
SYNONYM

#### According to
Index Fungorum

#### Published in
null

#### Original name
Irpex galzini Bres.

### Remarks
null


text:
<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="sl">
<context>
    <name/>
    <message id="orn-notrated">
        <source>Not rated yet</source>
        <translation>Ni ocen</translation>
    </message>
    <message id="orn-repositories">
        <source>Repositories</source>
        <translation>Skladišča</translation>
    </message>
    <message id="orn-refresh">
        <source>Refresh</source>
        <translation>Osveži</translation>
    </message>
    <message id="orn-disable">
        <source>Disable</source>
        <translation>Onemogoči</translation>
    </message>
    <message id="orn-enable">
        <source>Enable</source>
        <translation>Omogoči</translation>
    </message>
    <message id="orn-enabled">
        <source>Enabled</source>
        <translation>Omogočeno</translation>
    </message>
    <message id="orn-disabled">
        <source>Disabled</source>
        <translation>Onemogočeno</translation>
    </message>
    <message id="orn-recently-updated">
        <source>Recently updated</source>
        <translation>Nedavno posodobljeno</translation>
    </message>
    <message id="orn-network-idle">
        <source>Network is unavailable</source>
        <translation>Omrežje ni na voljo</translation>
    </message>
    <message id="orn-today">
        <source>Today</source>
        <translation>Danes</translation>
    </message>
    <message id="orn-yesterday">
        <source>Yesterday</source>
        <translation>Včeraj</translation>
    </message>
    <message id="orn-this-week">
        <source>This week</source>
        <translation>Ta teden</translation>
    </message>
    <message id="orn-this-month">
        <source>This month</source>
        <translation>Ta mesec</translation>
    </message>
    <message id="orn-month-format">
        <source>%0 %1</source>
        <extracomment>Output format for the month and year - %0 is a long month name and %1 is a year (for example "May 2017")</extracomment>
        <translation>%0 %1</translation>
    </message>
    <message id="orn-adding-repo">
        <source>Adding</source>
        <translation>Dodajam</translation>
    </message>
    <message id="orb-remove">
        <source>Remove</source>
        <translation>Odstrani</translation>
    </message>
    <message id="orn-removing">
        <source>Removing</source>
        <translation>Odstranjujem</translation>
    </message>
    <message id="orn-error">
        <source>An error occured</source>
        <translation>Prišlo je do napake</translation>
    </message>
    <message id="orn-repo-add">
        <source>Add repository</source>
        <translation>Dodaj skladišče</translation>
    </message>
    <message id="orn-repo-enable">
        <source>Enable repository</source>
        <translation>Omogoči skladišče</translation>
    </message>
    <message id="orn-install">
        <source>Install</source>
        <translation>Namesti</translation>
    </message>
    <message id="orn-remove">
        <source>Remove</source>
        <translation>Odstrani</translation>
    </message>
    <message id="orn-launch">
        <source>Launch</source>
        <translation>Zaženi</translation>
    </message>
    <message id="orn-package-installed">
        <source>Package %0 was successfully installed</source>
        <translation>Paket %0 je bil uspešno nameščen</translation>
    </message>
    <message id="orn-package-removed">
        <source>Package %0 was successfully removed</source>
        <translation>Paket %0 je bil uspešno odstranjen</translation>
    </message>
    <message id="orn-installed">
        <source>Installed</source>
        <translation>Nameščeno</translation>
    </message>
    <message id="orn-version-installed">
        <source>Installed version</source>
        <translation>Nameščena različica</translation>
    </message>
    <message id="orn-version-updated">
        <source>Last updated</source>
        <translation>Zadnjič posodobljeno</translation>
    </message>
    <message id="orn-dt-format">
        <source>yyyy-MM-dd hh:mm</source>
        <extracomment>Output format for the date labels. For details visit http://doc.qt.io/qt-5/qdate.html#toString</extracomment>
        <translation>yyyy-MM-dd hh:mm</translation>
    </message>
    <message id="orn-version-noavailable">
        <source>No versions available</source>
        <translation>Ni razpoložljivih verzij</translation>
    </message>
    <message id="orn-comments">
        <source>Comments</source>
        <translation>Komentarji</translation>
    </message>
    <message id="orn-author-apps">
        <source>More by %0</source>
        <translation>Več od %0</translation>
    </message>
    <message id="orn-cat-coding-competition">
        <source>Coding Competition</source>
        <translation>Coding Competition</translation>
    </message>
    <message id="orn-cat-applications">
        <source>Applications</source>
        <translation>Aplikacije</translation>
    </message>
    <message id="orn-cat-application">
        <source>Application</source>
        <translation>Aplikacija</translation>
    </message>
    <message id="orn-cat-ambience-themes">
        <source>Ambience & Themes</source>
        <translation>Ambienti in teme</translation>
    </message>
    <message id="orn-cat-business">
        <source>Business</source>
        <translation>Poslovno</translation>
    </message>
    <message id="orn-cat-city-guides-maps">
        <source>City guides & maps</source>
        <translation>Zemljevidi in mestni vodiči</translation>
    </message>
    <message id="orn-cat-education-science">
        <source>Education & Science</source>
        <translation>Znanost in izobraževanje</translation>
    </message>
    <message id="orn-cat-entertainment">
        <source>Entertainment</source>
        <translation>Zabava</translation>
    </message>
    <message id="orn-cat-music">
        <source>Music</source>
        <translation>Glasba</translation>
    </message>
    <message id="orn-cat-network">
        <source>Network</source>
        <translation>Omrežja</translation>
    </message>
    <message id="orn-cat-news-info">
        <source>News & info</source>
        <translation>Novice</translation>
    </message>
    <message id="orn-cat-patches">
        <source>Patches</source>
        <translation>Popravki</translation>
    </message>
    <message id="orn-cat-photo-video">
        <source>Photo & video</source>
        <translation>Foto in video</translation>
    </message>
    <message id="orn-cat-social-networks">
        <source>Social Networks</source>
        <translation>Socialna omrežja</translation>
    </message>
    <message id="orn-cat-sports">
        <source>Sports</source>
        <translation>Šport</translation>
    </message>
    <message id="orn-cat-system">
        <source>System</source>
        <translation>Sistem</translation>
    </message>
    <message id="orn-cat-unknown">
        <source>Unknown</source>
        <translation>Neznano</translation>
    </message>
    <message id="orn-cat-utilities">
        <source>Utilities</source>
        <translation>Pripomočki</translation>
    </message>
    <message id="orn-cat-games">
        <source>Games</source>
        <translation>Igre</translation>
    </message>
    <message id="orn-cat-game">
        <source>Game</source>
        <translation>Igra</translation>
    </message>
    <message id="orn-cat-action">
        <source>Action</source>
        <translation>Akcija</translation>
    </message>
    <message id="orn-cat-adventure">
        <source>Adventure</source>
        <translation>Pustolovščina</translation>
    </message>
    <message id="orn-cat-arcade">
        <source>Arcade</source>
        <translation>Arkadne igre</translation>
    </message>
    <message id="orn-cat-card-casino">
        <source>Card & casino</source>
        <translation>Igre na srečo in karte</translation>
    </message>
    <message id="orn-cat-education">
        <source>Education</source>
        <translation>Izobraževanje</translation>
    </message>
    <message id="orn-cat-puzzle">
        <source>Puzzle</source>
        <translation>Uganke</translation>
    </message>
    <message id="orn-cat-strategy">
        <source>Strategy</source>
        <translation>Strategije</translation>
    </message>
    <message id="orn-cat-trivia">
        <source>Trivia</source>
        <translation>Trivia</translation>
    </message>
    <message id="orn-cat-translations">
        <source>Translations</source>
        <translation>Prevodi</translation>
    </message>
    <message id="orn-cat-fonts">
        <source>Fonts</source>
        <translation>Pisave</translation>
    </message>
    <message id="orn-cat-libraries">
        <source>Libraries</source>
        <translation>Knjižnice</translation>
    </message>
    <message id="orn-update-available">
        <source>Update available</source>
        <translation>Na voljo so posodobitve</translation>
    </message>
    <message id="orn-update">
        <source>Update</source>
        <translation>Posodobi</translation>
    </message>
    <message id="orn-changelog">
        <source>Changelog</source>
        <translation>Dnevnik sprememb</translation>
    </message>
    <message id="orn-comments-withnum">
        <source>Comments (%0)</source>
        <translation>Komentarji (%0)</translation>
    </message>
    <message id="orn-version-repo-disabled">
        <source>Enable the repository first</source>
        <translation>Najprej omogočite skladišče</translation>
    </message>
    <message id="orn-search">
        <source>Search</source>
        <extracomment>The search menu item and the search page header text - should be a noun</extracomment>
        <translation>Iskanje</translation>
    </message>
    <message id="orn-searchpage-placeholder-noresults">
        <source>Nothing found</source>
        <translation>Ni zadetkov</translation>
    </message>
    <message id="orn-searchpage-placeholder-noresults-hint">
        <source>Try to change search keywords</source>
        <translation>Poskusite spremeniti iskani niz</translation>
    </message>
    <message id="orn-searchfield-placeholder">
        <source>Search</source>
        <extracomment>The search field placeholder text - should be a verb</extracomment>
        <translation>Vnesi iskani niz</translation>
    </message>
    <message id="orn-searchpage-placeholder-default">
        <source>Search results will be shown here</source>
        <translation>Rezultati iskanja bodo prikazani tu</translation>
    </message>
    <message id="orn-searchpage-placeholder-default-hint">
        <source>Type some keywords in the field above</source>
        <translation>Vnesite nekaj ključnih besed v polje zgoraj</translation>
    </message>
    <message id="orn-about">
        <source>About Storeman</source>
        <translation>O programu Storeman</translation>
    </message>
    <message id="orn-translations">
        <source>Translations</source>
        <translation>Prevodi</translation>
    </message>
    <message id="orn-coordinators">
        <source>Coordinators</source>
        <translation>Koordinatorji</translation>
    </message>
    <message id="orn-translators">
        <source>Translators</source>
        <translation>Prevajalci</translation>
    </message>
    <message id="orn-reviewers">
        <source>Reviewers</source>
        <translation>Recenzenti</translation>
    </message>
    <message id="orn-network-error">
        <source>A network error occurred</source>
        <translation>Prišlo je do napake omrežja</translation>
    </message>
    <message id="orn-pull-refresh">
        <source>Pull down to refresh</source>
        <translation>Za osveževanje potegnite navzdol</translation>
    </message>
    <message id="orn-development">
        <source>Development</source>
        <translation>Razvoj</translation>
    </message>
    <message id="orn-developers">
        <source>Developers</source>
        <translation>Razvijalci</translation>
    </message>
    <message id="orn-appicon">
        <source>Application Icon</source>
        <translation>Ikona aplikacije</translation>
    </message>
    <message id="orn-sources">
        <source>Source Code</source>
        <translation>Izvorna koda</translation>
    </message>
    <message id="orn-just-now">
        <source>Just now</source>
        <translation>Pravkar</translation>
    </message>
    <message id="orn-mins-ago" numerus="yes">
        <source>%n minute(s) ago</source>
        <translation><numerusform>Pred %n minuto</numerusform><numerusform>Pred %n minutama</numerusform><numerusform>Pred %n minutami</numerusform><numerusform>Pred %n minutami</numerusform></translation>
    </message>
    <message id="orn-hours-ago" numerus="yes">
        <source>%n hour(s) ago</source>
        <translation><numerusform>Pred %n uro</numerusform><numerusform>Pred %n urama</numerusform><numerusform>Pred %n urami</numerusform><numerusform>Pred %n urami</numerusform></translation>
    </message>
    <message id="orn-reply-to">
        <source>Reply to %0</source>
        <extracomment>Active label to navigate to the original comment - should be a noun</extracomment>
        <translation>Odgovori %0</translation>
    </message>
    <message id="orn-categories">
        <source>Categories</source>
        <translation>Kategorije</translation>
    </message>
    <message id="orn-category-noapps">
        <source>Currently there are no apps in this category</source>
        <translation>V tej kategoriji trenutno ni aplikacij</translation>
    </message>
    <message id="orn-cat-unknown2">
        <source>Unknown category</source>
        <translation>Neznana kategorija</translation>
    </message>
    <message id="orn-comment-body">
        <source>Your comment</source>
        <translation>Vaš komentar</translation>
    </message>
    <message id="orn-reply">
        <source>Reply</source>
        <extracomment>Menu item to reply for a comment - should be a verb</extracomment>
        <translation>Odgovori</translation>
    </message>
    <message id="orn-edit">
        <source>Edit</source>
        <translation>Uredi</translation>
    </message>
    <message id="orn-login-menu-item">
        <source>Log in to OpenRepos.net</source>
        <translation>Prijava v OpenRepos.net</translation>
    </message>
    <message id="orn-login-action">
        <source>Log in</source>
        <translation>Prijava</translation>
    </message>
    <message id="orn-username">
        <source>Username or e-mail address</source>
        <extracomment>A translated string should not be longer than the original</extracomment>
        <translation>Uporabniško ime ali e-poštni naslov</translation>
    </message>
    <message id="orn-login-help">
        <source>Log in to OpenRepos.net to comment applications and reply to others comments.

Storeman does not send your password to third-parties.</source>
        <translation>Z kometniranje in odgovore se prijavite v OpenRepos.net.

Storeman ne deli gesla s tretjimi osebami.</translation>
    </message>
    <message id="orn-loggedin-message">
        <source>You have successfully logged in to the OpenRepos.net</source>
        <translation>Uspešno ste se prijavili v OpenRepos.net</translation>
    </message>
    <message id="orn-loggedout-message">
        <source>You have logged out from the OpenRepos.net</source>
        <translation>Uspešno ste se odjavili iz OpenRepos.net</translation>
    </message>
    <message id="orn-login-error-title">
        <source>Login error</source>
        <translation>Napaka pri prijavi</translation>
    </message>
    <message id="orn-login-error-message">
        <source>Could not log in the OpenRepos.net - check your credentials and network connection</source>
        <translation>Neuspešna prijava v OpenRepos.net - preverite vaše poverilnice in povezavo z omrežjem</translation>
    </message>
    <message id="orn-loggedin-menu-item">
        <source>Logged in as %0</source>
        <translation>Prijavljeni kot %0</translation>
    </message>
    <message id="orn-logout-action">
        <source>Log out</source>
        <extracomment>Menu item</extracomment>
        <translation>Odjava</translation>
    </message>
    <message id="orn-logout-remorse">
        <source>Logging out</source>
        <extracomment>Remorse text</extracomment>
        <translation>Odjavljanje</translation>
    </message>
    <message id="orn-comment-edit-label">
        <source>Edit your comment</source>
        <translation>Uredite vaš komentar</translation>
    </message>
    <message id="orn-comment-update">
        <source>Update</source>
        <extracomment>Update a comment</extracomment>
        <translation>Posodobi</translation>
    </message>
    <message id="orn-comment-send">
        <source>Send</source>
        <translation>Pošlji</translation>
    </message>
    <message id="orn-authorisation-expires-summary">
        <source>Authorisation expires</source>
        <translation>Avtorizacija poteče</translation>
    </message>
    <message id="orn-authorisation-expired-summary">
        <source>Authorisation expired</source>
        <translation>Avtorizacija je potekla</translation>
    </message>
    <message id="orn-reauthorise">
        <source>Click to reauthorise</source>
        <translation>Kliknite za ponovno avtoriziranje.</translation>
    </message>
    <message id="orn-enable-all">
        <source>Enable all</source>
        <translation>Omogoči vse</translation>
    </message>
    <message id="orn-disable-all">
        <source>Disable all</source>
        <translation>Onemogoči vse</translation>
    </message>
    <message id="orn-enabling-all">
        <source>Enabling all</source>
        <translation>Omogočam vse</translation>
    </message>
    <message id="orn-disabling-all">
        <source>Disabling all</source>
        <translation>Onemogočam vse</translation>
    </message>
    <message id="orn-installed-apps">
        <source>Installed applications</source>
        <translation>Nameščene aplikacije</translation>
    </message>
    <message id="orn-bookmarks-added">
        <source>The app was added to bookmarks</source>
        <translation>Aplikacija je dodana med zaznamke</translation>
    </message>
    <message id="orn-bookmarks-removed">
        <source>The app was removed from bookmarks</source>
        <translation>Aplikacija je odstranjena iz zaznamkov</translation>
    </message>
    <message id="orn-no-bookmarks">
        <source>Your bookmarked applications will be shown here</source>
        <translation>Vaše zaznamovane aplikacije bodo prikazane tu</translation>
    </message>
    <message id="orn-bookmarks">
        <source>Bookmarks</source>
        <translation>Zaznamki</translation>
    </message>
    <message id="orn-no-repos">
        <source>No OpenRepos repositories have been added yet</source>
        <translation>Ni dodanih OpenRepos skladišč</translation>
    </message>
    <message id="orn-add-repo-hint">
        <source>You can add a repository from an application page</source>
        <translation>Skladišča lahko dodate na strani aplikacije</translation>
    </message>
    <message id="orn-refresh-cache">
        <source>Refresh cache</source>
        <translation>Posodobi prepomnilnik</translation>
    </message>
    <message id="orn-tag-underscore">
        <source>U</source>
        <extracomment>Tag underscore</extracomment>
        <translation>P</translation>
    </message>
    <message id="orn-tag-strong">
        <source>B</source>
        <extracomment>Tag strong</extracomment>
        <translation>K</translation>
    </message>
    <message id="orn-tag-emphasize">
        <source>I</source>
        <extracomment>Tag emphasize</extracomment>
        <translation>L</translation>
    </message>
    <message id="orn-updates-available-summary">
        <source>Updates available</source>
        <translation>Na voljo so posodobitve</translation>
    </message>
    <message id="orn-error-depresolution">
        <source>Nothing provides %1 needed by %2</source>
        <extracomment>A template string for a dependecy resolution error. %1 is a dependency and %2 is a failed package.</extracomment>
        <translation>Nič ne zagotavlja %1 kar potrebuje %2</translation>
    </message>
    <message id="orn-backups">
        <source>Backups</source>
        <translation>Varnostne kopije</translation>
    </message>
    <message id="orn-backup-description">
        <source>Backup and restore repos and installed apps</source>
        <translation>Varnostno shranjevanje in obnovitev skladišč in nameščenih aplikacij</translation>
    </message>
    <message id="orn-create-backup">
        <source>Create a backup</source>
        <translation>Ustvari varnostno kopijo</translation>
    </message>
    <message id="orn-backup-error">
        <source>Backup error</source>
        <translation>Napaka pri varnostnem kopiranju</translation>
    </message>
    <message id="orn-backup-error-directory">
        <source>Could not create directory</source>
        <translation>Ne morem ustvariti mape</translation>
    </message>
    <message id="orn-restore-title">
        <source>Restore from a file</source>
        <translation>Obnovi iz datoteke</translation>
    </message>
    <message id="orn-restore">
        <source>Restore</source>
        <translation>Obnovitev</translation>
    </message>
    <message id="orn-restore-hint">
        <source>Restore OpenRepos repositories and installed apps from the selected file. This action will not affect your current repositories and will not remove installed applications.</source>
        <translation>Obnovite OpenRepos skladišča in nameščene aplikacije iz izbrane datoteke. Dejanje ne vpliva na trenutna skladišča in ne bo odstranilo nameščenih aplikacij.</translation>
    </message>
    <message id="orn-created">
        <source>Created</source>
        <translation>Ustvarjeno</translation>
    </message>
    <message id="orn-total-repos">
        <source>Total repositories</source>
        <translation>Skupaj skladišč</translation>
    </message>
    <message id="orn-details">
        <source>Details</source>
        <translation>Podrobnosti</translation>
    </message>
    <message id="orn-backups-placeholder">
        <source>Backups will be shown here</source>
        <translation>Varnostne kopije bodo prikazane tu</translation>
    </message>
    <message id="orn-restoring-repos">
        <source>Restoring repositories</source>
        <translation>Obnavljanje skladišč</translation>
    </message>
    <message id="orn-refreshing-repos">
        <source>Refreshing repositories</source>
        <translation>Osveževanje skladišč</translation>
    </message>
    <message id="orn-searching-packages">
        <source>Searching packages</source>
        <translation>Iskanje paketov</translation>
    </message>
    <message id="orn-installing-repos">
        <source>Installing packages</source>
        <translation>Nameščanje paketov</translation>
    </message>
    <message id="orn-restoring-title">
        <source>Restoring</source>
        <translation>Obnavljanje</translation>
    </message>
    <message id="orn-success-backup">
        <source>Successful backup</source>
        <translation>Uspešno varnostno kopiranje</translation>
    </message>
    <message id="orn-success-restore">
        <source>Successful restore</source>
        <translation>Uspešno obnavljanje iz varnostne kopije</translation>
    </message>
    <message id="orn-installed-packages">
        <source>Installed packages</source>
        <translation>Nameščeni paketi</translation>
    </message>
    <message id="orn-login2comment">
        <source>Login to comment</source>
        <translation>Za komentiranje se prijavite</translation>
    </message>
    <message id="orn-backup">
        <source>Backup</source>
        <translation>Varnostno kopiraj</translation>
    </message>
    <message id="orn-backup-hint">
        <source>
Backup to a file

Backup allows you to save your current OpenRepos repositories, installed applications and bookmarks and restore them later (for example after factory reset). A backup is a local file that is saved to the
~/Documents/Storeman directory.

Attention! You should copy your backups manually to some safe place before performing a factory reset. It could be your SD card, external device, cloud storage or something else.
</source>
        <translation>
Ustvari varnostno kopijo

Varnostna kopija vam omogoča shraniti seznam OpenRepos skladišč, nameščene aplokacije in zaznamke, katere lahko kasneje obnovite (na primer ob vrnitvi v tovarniško stanje). Varnostna kopija je datoteka, ki se shrani v mapo
~/Documents/Storeman.

Pozor! Varnostne kopije morate pred povrnitvijo v tovarniško stanje ročno shraniti na varno mesto. To je lahko SD kartica, zunanja USB naprava, oblačna shramba ali karkoli drugega.
</translation>
    </message>
    <message id="orn-pmstate-initialising">
        <source>Initialising</source>
        <translation>Zagon</translation>
    </message>
    <message id="orn-pmstate-addingrepo">
        <source>Adding repo %0</source>
        <translation>Dodajanje skladišča %0</translation>
    </message>
    <message id="orn-pmstate-removingrepo">
        <source>Removing repo %0</source>
        <translation>Odstranjevanje skladišča %0</translation>
    </message>
    <message id="orn-pmstate-enablingrepo">
        <source>Enabling repo %0</source>
        <translation>Omogočanje skladišča %0</translation>
    </message>
    <message id="orn-pmstate-disablingrepo">
        <source>Disabling repo %0</source>
        <translation>Onemogočanje skladišča %0</translation>
    </message>
    <message id="orn-pmstate-refreshingrepo">
        <source>Refreshing %0</source>
        <translation>Osveževanje %0</translation>
    </message>
    <message id="orn-pmstate-installingpackage">
        <source>Installing package %0</source>
        <translation>Nameščanje paketa %0</translation>
    </message>
    <message id="orn-pmstate-removingpackage">
        <source>Removing package %0</source>
        <translation>Odstranjevanje paketa %0</translation>
    </message>
    <message id="orn-pmstate-updatingpackage">
        <source>Updating package %0</source>
        <translation>Posodabljanje paketa %0</translation>
    </message>
    <message id="orn-repo-removed">
        <source>The repository %0 was removed</source>
        <translation>Skladišče %0 je odstranjeno</translation>
    </message>
    <message id="orn-repo-added">
        <source>The repository %0 was added</source>
        <translation>Skladišče %0 je dodano</translation>
    </message>
    <message id="orn-repo-disabled">
        <source>The repository %0 was disabled</source>
        <translation>Skladišče %0 je onemogočeno</translation>
    </message>
    <message id="orn-repo-enabled">
        <source>The repository %0 was enabled</source>
        <translation>Skladišče %0 je omogočeno</translation>
    </message>
    <message id="orn-not-installed">
        <source>Not installed</source>
        <translation>Ni nameščeno</translation>
    </message>
    <message id="orn-installing">
        <source>Installing</source>
        <translation>Nameščanje</translation>
    </message>
    <message id="orn-unknown">
        <source>Unknown</source>
        <translation>Neznano</translation>
    </message>
    <message id="orn-updating">
        <source>Updating</source>
        <translation>Posodabljanje</translation>
    </message>
    <message id="orn-version-available-global">
        <source>Available in other repositories</source>
        <translation>Na voljo v drugih skladiščih</translation>
    </message>
    <message id="orn-installed-apps-description">
        <source>Only from enabled repositories</source>
        <translation>Le iz omogočenih skladišč</translation>
    </message>
    <message id="orn-update-all">
        <source>Update all</source>
        <translation>Posodobi vse</translation>
    </message>
    <message id="orn-no-installed-apps">
        <source>Could not find any applications installed from OpenRepos</source>
        <translation>Ne najdem aplikacij, nameščenih iz OpenRepos.net</translation>
    </message>
    <message id="orn-pmstate-multiple" numerus="yes">
        <source>%n operations are in progress</source>
        <extracomment>There are always more than 1 operations</extracomment>
        <translation><numerusform>%n operacija v teku</numerusform><numerusform>%n operaciji v teku</numerusform><numerusform>%n operacije v teku</numerusform><numerusform>%n operacij v teku</numerusform></translation>
    </message>
    <message id="orn-version-available">
        <source>Available version</source>
        <translation>Razpoložljive različice</translation>
    </message>
    <message id="orn-error-packagenotfound">
        <source>Couldn't find package</source>
        <translation>Ne najdem paketa</translation>
    </message>
    <message id="orn-size-installed">
        <source>Installed size</source>
        <translation>Nameščena velikost</translation>
    </message>
    <message id="orn-size-download-install">
        <source>Download / install size</source>
        <translation>Prenešena / nameščena velikost</translation>
    </message>
    <message id="orn-cat-public-transport">
        <source>Public Transport</source>
        <translation>Javni prevoz</translation>
    </message>
    <message id="orn-comments-wait">
        <source>Wait for users' feedback</source>
        <extracomment>This will be shown to an application author</extracomment>
        <translation>Počakaj na odziv uporabnikov</translation>
    </message>
    <message id="orn-comments-bethefirst">
        <source>Be the first to comment</source>
        <extracomment>This will be shown to a normal user</extracomment>
        <translation>Bodite prvi in komentirajte</translation>
    </message>
    <message id="orn-comments-nocomments">
        <source>There is nothing here yet</source>
        <translation>Tu ni še ničesar</translation>
    </message>
    <message id="orn-settings">
        <source>Settings</source>
        <translation>Nastavitve</translation>
    </message>
    <message id="orn-updates">
        <source>Updates</source>
        <translation>Posodobitve</translation>
    </message>
    <message id="orn-updates-notification-switch">
        <source>Show updates notification</source>
        <translation>Prikaži obvestila o posodobitvah</translation>
    </message>
    <message id="orn-updates-check-interval">
        <source>Updates check interval</source>
        <translation>Interval preverjanja posodobitev</translation>
    </message>
    <message id="orn-interval-m" numerus="yes">
        <source>%n minute(s)</source>
        <translation><numerusform>%n minuta</numerusform><numerusform>%n minuti</numerusform><numerusform>%n minute</numerusform><numerusform>%n minut</numerusform></translation>
    </message>
    <message id="orn-interval-h" numerus="yes">
        <source>%n hour(s)</source>
        <translation><numerusform>%n ura</numerusform><numerusform>%n uri</numerusform><numerusform>%n ure</numerusform><numerusform>%n ur</numerusform></translation>
    </message>
    <message id="orn-tag-strikeout">
        <source>S</source>
        <extracomment>Tag strikeout</extracomment>
        <translation>P</translation>
    </message>
    <message id="orn-hint-commentfield">
        <source>Swipe to see all the tag buttons</source>
        <translation>Podrsajte za prikaz vseh oznak</translation>
    </message>
    <message id="orn-dcm-user2">
        <source>Deep Thought</source>
        <extracomment>https://simple.wikipedia.org/wiki/42_(answer)</extracomment>
        <translation>Globoka Misel</translation>
    </message>
    <message id="orn-dcm-user1">
        <source>A little white mouse</source>
        <extracomment>https://simple.wikipedia.org/wiki/42_(answer)</extracomment>
        <translation>Majhna bela miška</translation>
    </message>
    <message id="orn-dcm-question">
        <source>What is the Answer to the Ultimate Question of Life, the Universe, and Everything?</source>
        <extracomment>https://simple.wikipedia.org/wiki/42_(answer)</extracomment>
        <translation>Kaj je odgovor na končno vprašanje o življenju, vesolju in sploh vsem?</translation>
    </message>
    <message id="orn-hint-commentdelegate-created">
        <source>7.5 million years ago</source>
        <translation>Pred 7,5 milijona leti</translation>
    </message>
    <message id="orn-hint-commentdelegate">
        <source>Tap to navigate to the replied comment</source>
        <translation>Pritisnite za prikaz odgovora na komentar</translation>
    </message>
    <message id="orn-tags">
        <source>Tags</source>
        <translation>Oznake</translation>
    </message>
    <message id="orn-tag-apps">
        <source>Tagged Applications</source>
        <translation>Označene aplikacije</translation>
    </message>
    <message id="orn-rate-app">
        <source>Rate the application</source>
        <translation>Ocenite aplikacijo</translation>
    </message>
    <message id="orn-vote-send">
        <source>Your vote has been sent</source>
        <translation>Vaš glas je bil oddan</translation>
    </message>
    <message id="orn-login2rate">
        <source>Log in to rate the application</source>
        <translation>Za ocenjevanje se morate prijaviti</translation>
    </message>
    <message id="orn-hint-rating">
        <source>Tap to rate the application</source>
        <translation>Pritisnite za oceno aplikacije</translation>
    </message>
    <message id="orn-local-rpms">
        <source>Local RPM files</source>
        <translation>Lokalne RPM datoteke</translation>
    </message>
    <message id="orn-delete">
        <source>Delete</source>
        <translation>Izbriši</translation>
    </message>
    <message id="orn-deleting">
        <source>Deleting</source>
        <translation>Brisanje</translation>
    </message>
    <message id="orn-no-local-rpms">
        <source>No local RPM files were found</source>
        <translation>Ni lokalnih RPM datotek</translation>
    </message>
    <message id="orn-deletion-error">
        <source>Failed to delete</source>
        <translation>Neuspešno brisanje</translation>
    </message>
    <message id="orn-remove-all">
        <source>Remove all</source>
        <translation>Odstrani vse</translation>
    </message>
    <message id="orn-removing-all">
        <source>Removing all</source>
        <translation>Odstranjujem vse</translation>
    </message>
    <message id="orn-repo-allremoved">
        <source>All repositories were removed</source>
        <translation>Vsa skladišča so odstranjena</translation>
    </message>
    <message id="orn-search-on-openrepos">
        <source>Search on OpenRepos.net</source>
        <translation>Išči v OpenRepos.net</translation>
    </message>
    <message id="orn-check-for-updates-switch">
        <source>Check for updates</source>
        <translation>Preveri posodobitve</translation>
    </message>
    <message id="orn-check-for-updates-descr">
        <source>Updates are checked only when the Storeman is running</source>
        <translation>Posodobitve delujejo le, ko je aplikacija Storeman zagnana</translation>
    </message>
    <message id="orn-smart-check-switch">
        <source>Smart check</source>
        <translation>Pametno preverjanje</translation>
    </message>
    <message id="orn-smart-check-descr">
        <source>Use the OpenRepos.net API to determine if there are new updates</source>
        <translation>Za preverjenja najnovejših različic uporabite OpenRepos.net API.</translation>
    </message>
    <message id="orn-reload">
        <source>Reload</source>
        <translation>Ponovno naloži</translation>
    </message>
    <message id="orn-no-packages">
        <source>No packages available</source>
        <translation>Ni razpoložljivih paketov</translation>
    </message>
    <message id="orn-error-comment-sending">
        <source>Error sending comment</source>
        <translation>Napaka pri pošiljanju komentarja</translation>
    </message>
    <message id="orn-error-comment-deletion">
        <source>Error deleting comment</source>
        <translation>Napaka pri brisanju komentarja</translation>
    </message>
    <message id="orn-error-network">
        <source>Network error</source>
        <translation>Omrežna napaka</translation>
    </message>
    <message id="orn-hint-bookmark">
        <source>Tap to bookmark the application</source>
        <translation>Pritisnite za zaznamek aplikacije</translation>
    </message>
    <message id="orn-bad-appid">
        <source>Invalid package ID %1</source>
        <translation>Neveljaven ID paketa %1</translation>
    </message>
    <message id="orn-backup-filenameph">
        <source>A file name for backup</source>
        <translation>Ime varnostne kopije</translation>
    </message>
    <message id="orn-file-exists">
        <source>File already exists</source>
        <translation>Datoteka že obstaja</translation>
    </message>
    <message id="orn-backup-items">
        <source>What to backup</source>
        <translation>Določite, kaj se shrani</translation>
    </message>
    <message id="orn-backup-apps">
        <source>Installed applications</source>
        <translation>Nameščene aplikacije</translation>
    </message>
    <message id="orn-hint-close">
        <source>Tap again to close the hint</source>
        <translation>Pritisnite znova da skrijete namig</translation>
    </message>
    <message id="orn-mainpage">
        <source>Main page</source>
        <translation>Prva stran</translation>
    </message>
    <message id="orn-show-recent-switch">
        <source>Show recently updated on start</source>
        <translation>Ob zagonu prikaži nedavno posodobljene</translation>
    </message>
    <message id="orn-show-recent-switch-descr">
        <source>Switch to the page of recently updated packages on start</source>
        <translation>Ob zagonu odpre stran z nedavno posodobljenimi aplikacijami</translation>
    </message>
    <message id="orn-mainpage-order">
        <source>Order items</source>
        <translation>Vrstni red</translation>
    </message>
    <message id="orn-reset">
        <source>Reset</source>
        <translation>Ponastavi</translation>
    </message>
    <message id="orn-mainpage-order-description">
        <source>Drag items to change their order</source>
        <translation>Povlecite vnose, da spremenite njihov vrstni red</translation>
    </message>
    <message id="orn-cat-adult-content">
        <source>Adult Content</source>
        <translation>Vsebina za odrasle</translation>
    </message>
    <message id="orn-categories-filter">
        <source>Categories filter</source>
        <translation>Filter kategorij</translation>
    </message>
    <message id="orn-categories-filter-descr">
        <source>Select which categories to show</source>
        <translation>Izberite kategorije za prikaz</translation>
    </message>
    <message id="orn-pmstate-refreshingcache">
        <source>Refreshing of cache</source>
        <translation>Osveževanje predpomnilnika</translation>
    </message>
    <message id="orn-refresh-cache-switch">
        <source>Refresh cache after system upgrade</source>
        <translation>Osvežite predpomnilnik po nadgradnji sistema</translation>
    </message>
    <message id="orn-refresh-cache-switch-descr">
        <source>Force refreshing of cache of all repositories after system upgrade</source>
        <translation>Vsilite osvežitev predpomnilnika po nadgradnji sistema</translation>
    </message>
    <message id="orn-save-password">
        <source>Save password</source>
        <translation>Shrani geslo</translation>
    </message>
    <message id="orn-save-password-help">
        <source>Save password to the encrypted device storage to perform automatic re-login.</source>
        <translation>Shrani šifrirano geslo za samodejno prijavo.</translation>
    </message>
    <message id="orn-share-link">
        <source>Share link</source>
        <translation>Deli povezavo</translation>
    </message>
    <message id="orn-repository">
        <source>Repository</source>
        <translation>Skladišče</translation>
    </message>
    <message id="orn-myrepository">
        <source>My repository</source>
        <translation>Moje skladišče</translation>
    </message>
    <message id="orn-donate-with">
        <source>Donate with %1</source>
        <translation>Prispevajte z %1</translation>
    </message>
    <message id="orn-cover-updates-available">
        <source>Updates available</source>
        <translation>Na voljo so posodobitve</translation>
    </message>
    <message id="orn-package-updated">
        <source>Package %0 was successfully updated</source>
        <translation>Paket %0 je bil uspešno posodobljen</translation>
    </message>
    <message id="orn-app-description-full">
        <source>
Native OpenRepos.net client for Sailfish&nbsp;OS

This is an open source software which is distributed under the terms of the MIT&nbsp;License

You can report an issue on OpenRepos.net or GitHub (use the buttons below)
</source>
        <translation>
OpenRepos.net odjemalec za Sailfish&nbsp;OS

To je odprtokodni program, ki se distribuira z MIT&nbsp;licenco.

Morebitne pripombe in težave lahko javite na OpenRepos.net ali GitHub (uporabite spodnje gumbe)
</translation>
    </message>
    <message id="orn-show-details">
        <source>Show details</source>
        <translation>Prikaži podrobnosti</translation>
    </message>
    <message id="orn-unused-repos-found">
        <source>Unused repositories found</source>
        <translation>Najdena neuporabna sladišča</translation>
    </message>
    <message id="orn-no-unused-repos">
        <source>Unused repositories not found</source>
        <translation>Ni neuporabnih sladišč</translation>
    </message>
    <message id="orn-search-unused-repos">
        <source>Search for unused</source>
        <translation>Poišči neuporabljena</translation>
    </message>
    <message id="orn-unused-repos-switch">
        <source>Search for unused repositories</source>
        <translation>Poišči neuporabljena skladišča</translation>
    </message>
    <message id="orn-unused-repos-switch-descr">
        <source>Search for unused repositories after removing packages.</source>
        <translation>Poišče neuporabljena skladišča po odstranitvi paketov</translation>
    </message>
    <message id="orn-unused-repos">
        <source>Unused repositories</source>
        <translation>Neuporabljena skladišča</translation>
    </message>
    <message id="orn-unused-repos-text">
        <source>
There are no installed packages for the next repositories.

Do you want to remove them now?
</source>
        <translation>
Naslednja skladišča nimajo nameščenih paketov.

Ali jih želite odstraniti?
</translation>
    </message>
    <message id="orn-updates-check-interval-minimum">
        <source>At least 10 minutes</source>
        <translation>Najmanj 10 minut</translation>
    </message>
    <message id="orn-check-for-self-updates-switch">
        <source>Check for self-updates</source>
        <translation>Preveri za posodobitev Storeman</translation>
    </message>
    <message id="orn-check-for-self-updates-descr">
        <source>Enable the Storeman OBS repository to check for Storeman updates</source>
        <translation>Omogoči Storeman OBS skladišče za preverjanje Storeman posodobitev</translation>
    </message>
    <message id="orn-storeman-repo-name">
        <source>Storeman OBS Repository</source>
        <translation>Storeman OBS skladišče</translation>
    </message>
</context>
</TS>


text:
package dagger.internal.codegen.writer;

import java.util.Formatter;

/**
 * Represents a string literal as found in Java source code.
 */
public final class StringLiteral {
  /** Returns a new {@link StringLiteral} instance for the intended value of the literal. */
  public static StringLiteral forValue(String value) {
    return new StringLiteral(value, stringLiteral(value));
  }

  /** Returns the string literal representing {@code data}, including wrapping quotes. */
  private static String stringLiteral(String value) {
    StringBuilder result = new StringBuilder();
    result.append('"');
    for (int i = 0; i < value.length(); i++) {
      char c = value.charAt(i);
      switch (c) {
        case '"':
          result.append("\\\"");
          break;
        case '\\':
          result.append("\\\\");
          break;
        case '\b':
          result.append("\\b");
          break;
        case '\t':
          result.append("\\t");
          break;
        case '\n':
          result.append("\\n");
          break;
        case '\f':
          result.append("\\f");
          break;
        case '\r':
          result.append("\\r");
          break;
        default:
          if (Character.isISOControl(c)) {
            new Formatter(result).format("\\u%04x", (int) c);
          } else {
            result.append(c);
          }
      }
    }
    result.append('"');
    return result.toString();
  }

  private final String value;
  private final String literal;

  private StringLiteral(String value, String literal) {
    this.value = value;
    this.literal = literal;
  }

  public String value() {
    return value;
  }

  public String literal() {
    return literal;
  }

  @Override
  public String toString() {
    return literal;
  }

  @Override
  public boolean equals(Object obj) {
    if (obj == this) {
      return true;
    } else if (obj instanceof StringLiteral) {
      return this.value.equals(((StringLiteral) obj).value);
    } else {
      return false;
    }
  }

  @Override
  public int hashCode() {
    return value.hashCode();
  }
}


text:
require 'spec_helper'

<% output_attributes = attributes.reject { |attribute| [:datetime, :timestamp, :time, :date].index(attribute.type) } -%>
describe "<%= ns_table_name %>/show " do
  before(:each) do
    @<%= ns_file_name %> = assign(:<%= ns_file_name %>, build_stubbed(:<%= class_name.underscore %>))
  end

  it " renders attributes " do
    render

<% for attribute in output_attributes -%>
    expect(rendered).to match(/<%= eval(value_for(attribute)) %>/)
<% end -%>
  end
end


text:
set +h
# Linux From Scratch - 7.7
# Chapter 8: System Configuration and Bootscripts
# Section 4: GRUB2
#####################################################################
# Haven't done this yet because I always just modify the grub
# created by Arch-Linux. Here's what I use, from LFS, to work from:
#
# For UEFI setup, see notes in OneNote. Otherwise this is pretty
#+good. May want to create a new script that puts this in
#+/etc/grub.d/40-custom.cfg and runs grub-mkconfig -o /boot/grub/grub.cfg
#
# Different story if Arch-Linux is to be dropped. In that case run this
#+in non-safety mode, choosing "no" for GRUBEXISTS. (overwrites
#+MBR so be SURE you want this!!!)
#
# set default=0
# set timeout=5
#
# insmod ext2
# set root=(hd0,2)
#
# menuentry "GNU/Linux, Linux 3.19.8-Bobby-lfs-7.7" {
#         linux   /boot/vmlinuz-3.19.8-lfs-7.7 root=/dev/sda2 ro
#
#        *** REMOVE /boot if it's its own partition! ***
#
# Leave out the first two lines ( should already be present. Modify
#    existing lines if desired. ) /dev/sda2 is the root partition,
#    (hdo,2) is the /boot partition.
#
#####################################################################
# CURRENTLY **NOT** IN SAFETY MODE!
#####################################################################
source ../lfs_profile
if [ $BOOTDEV ]; then
    ROOTDEV=$BOOTDEV
else
    RELBOOT=/boot
    ROOTDEV=$LFSDEV
fi
GRUBEXISTS="yes"
echo "Is there an existing grub that you wish to keep?"
read GRUBEXISTS
if [ $GRUBEXISTS == "yes" -o $GRUBEXISTS == "y" ]; then
    sed -i.bak s@"\(### END /etc/grub.d/10_linux ###\)"@\
"menuentry \"GNU/Linux, Linux $KVER-${CHRISTENED}-${SURNAME}\" {\n\
        insmod ext2\n\
        set root=(hd0,"${ROOTDEV:8}")\n\
        linux   ${RELBOOT}/vmlinuz-${KVER}-${CHRISTENED}-${SURNAME} root=${LFSDEV} ro\n\
}\n\n\1@" /boot/grub/grub.cfg
elif [ $GRUBEXISTS == "no" -o $GRUBEXISTS == "n" ]; then
    grub-install ${ROOTDEV:0:8}
    [ -f /boot/grub/grub.cfg ] && mv /boot/grub/grub.{cfg,bak} || (exit 0)
    cat > /boot/grub/grub.cfg << "EOF"
# Begin /boot/grub/grub.cfg
set default=0
set timeout=5

insmod ext2

EOF
    echo "set root=(hd0,${ROOTDEV:8})" >> /boot/grub/grub.cfg

    echo "menuentry \"Linux From Scratch, Linux ${KVER}-${CHRISTENED}-${SURNAME}\" {" \
            >> /boot/grub/grub.cfg
    echo "        linux   ${RELBOOT}/vmlinuz-${KVER}-${CHRISTENED}-${SURNAME} root=${LFSDEV} ro" >> /boot/grub/grub.cfg
    echo "}" >> /boot/grub/grub.cfg
else
    echo "Better find out! (Did not answer yes/y or no/n)"
    exit 1
fi
#####################################################################
#
# That'll just about do it! Continue to 9.000_wrapup.sh
#
#####################################################################


text:
<?php

namespace Doctrine\ODM\MongoDB\Mapping\Annotations;

/**
 * @Annotation
 * @deprecated This class will be removed in ODM 2.0. Use `@ODM\Field(type="bin_md5")` instead.
 */
final class BinMD5 extends AbstractField
{
    public $type = 'bin_md5';

    public function isDeprecated()
    {
        return true;
    }
}


text:
#ifndef SPDYLAY_SSL_H
#define SPDYLAY_SSL_H

#include "spdylay_config.h"

#include <stdint.h>
#include <cstdlib>
#include <sys/time.h>
#include <poll.h>
#include <vector>

#include <openssl/ssl.h>
#include <openssl/err.h>
#include <spdylay/spdylay.h>

namespace spdylay {

extern bool ssl_debug;

class Spdylay {
public:
  Spdylay(int fd, SSL *ssl, uint16_t version,
          const spdylay_session_callbacks *callbacks,
          void *user_data);
  ~Spdylay();
  void clear_io_flags();
  int recv();
  int send();
  ssize_t send_data(const uint8_t *data, size_t len, int flags);
  ssize_t recv_data(uint8_t *data, size_t len, int flags);
  bool want_read();
  bool want_write();
  bool finish();
  int fd() const;
  int submit_request
  (const std::string& scheme,
   const std::string& hostport, const std::string& path,
   const std::vector<std::pair<std::string, std::string> >& headers,
   uint8_t pri,
   const spdylay_data_provider *data_prd,
   int64_t data_length,
   void *stream_user_data,
   bool useProxy,
   const std::string& proxyHost,
   uint16_t proxyPort);
  int submit_settings(int flags, spdylay_settings_entry *iv, size_t niv);
  bool would_block();
  void* user_data();
private:
  SSL *ssl_;
  spdylay_session *session_;
  void *user_data_;
  int fd_;
  uint16_t version_;
  uint8_t io_flags_;
};

int connect_to(const std::string& host, uint16_t port);

int nonblock_connect_to(const std::string& host, uint16_t port, int timeout);

int make_listen_socket(const std::string& host, uint16_t port, int family);

int make_non_block(int fd);

int set_tcp_nodelay(int fd);

ssize_t send_callback(spdylay_session *session,
                      const uint8_t *data, size_t len, int flags,
                      void *user_data);

ssize_t recv_callback(spdylay_session *session,
                      uint8_t *data, size_t len, int flags, void *user_data);

void print_nv(char **nv);

void on_ctrl_recv_callback
(spdylay_session *session, spdylay_frame_type type, spdylay_frame *frame,
 void *user_data);

void on_invalid_ctrl_recv_callback
(spdylay_session *session, spdylay_frame_type type, spdylay_frame *frame,
 uint32_t status_code, void *user_data);

void on_ctrl_recv_parse_error_callback(spdylay_session *session,
                                       spdylay_frame_type type,
                                       const uint8_t *head,
                                       size_t headlen,
                                       const uint8_t *payload,
                                       size_t payloadlen,
                                       int error_code, void *user_data);

void on_unknown_ctrl_recv_callback(spdylay_session *session,
                                   const uint8_t *head,
                                   size_t headlen,
                                   const uint8_t *payload,
                                   size_t payloadlen,
                                   void *user_data);

void on_ctrl_send_callback
(spdylay_session *session, spdylay_frame_type type, spdylay_frame *frame,
 void *user_data);

void on_data_recv_callback
(spdylay_session *session, uint8_t flags, int32_t stream_id, int32_t length,
 void *user_data);

void on_data_send_callback
(spdylay_session *session, uint8_t flags, int32_t stream_id, int32_t length,
 void *user_data);

void ctl_poll(pollfd *pollfd, Spdylay *sc);

int select_next_proto_cb(SSL* ssl,
                         unsigned char **out, unsigned char *outlen,
                         const unsigned char *in, unsigned int inlen,
                         void *arg);

void setup_ssl_ctx(SSL_CTX *ssl_ctx, void *next_proto_select_cb_arg);

int ssl_handshake(SSL *ssl, int fd);

int ssl_nonblock_handshake(SSL *ssl, int fd, int& timeout);

// Returns difference between |a| and |b| in milliseconds, assuming
// |a| is more recent than |b|.
int64_t time_delta(const timeval& a, const timeval& b);

void reset_timer();

void get_timer(timeval *tv);

int get_time(timeval *tv);

void print_timer();

enum {
  WANT_READ = 1,
  WANT_WRITE = 1 << 1
};

uint8_t get_ssl_io_demand(SSL *ssl, ssize_t r);

// Setting true will print characters with ANSI color escape codes
// when printing SPDY frames. This function changes a static variable.
void set_color_output(bool f);

} // namespace spdylay

#endif // SPDYLAY_SSL_H


text:
package io.clickhandler.web.materialUiGwt.client.icons;

import io.clickhandler.web.reactGwt.client.react.ReactClass;

import javax.inject.Inject;

public class PowerSettingsNewSvgIcon extends AbstractMaterialIcon {

    @Inject
    public PowerSettingsNewSvgIcon() {
    }

    @Override
    protected native ReactClass<Props> reactClass() /*-{
        return $wnd.MaterialUi.Icons.PowerSettingsNew;
    }-*/;
}


text:
using System;

namespace HttpDownloader
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            // HttpUtil.SetProxy("127.0.0.1", 8888);

            var httpDownloader = new HttpDownloader();

            const string url = "http://174.138.175.114/500mb-file.zip"; //demo link for 500MB download
            const string filePath = @"c:\500mb-file.zip"; //writing the downloaded stream to a physical file

            bool result = httpDownloader.GetFileWithProgress(url, filePath,
                (readSize, totalSize) =>
                {
                    // print progress to console
                    var progress = (readSize * 100) / totalSize;
                    Console.Write("\r" + readSize + " / " + totalSize + ", " + progress + " % ");
                    return true;
                });
            Console.WriteLine("\r\nDownload " + (result ? "Ok" : "Failed"));
        }
    }
}


text:
<?php
/* Prototype  : bool stream_filter_remove(resource stream_filter)
 * Description: Flushes any data in the filter's internal buffer, removes it from the chain, and frees the resource
 * Source code: ext/standard/streamsfuncs.c
 * Alias to functions:
 */

echo "*** Testing stream_filter_remove() : basic functionality ***\n";

$file = dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'streamfilterTest.txt';
touch( $file );

$fp = fopen( $file, 'w+' );

$filter = stream_filter_append( $fp, "string.rot13", STREAM_FILTER_WRITE );
fwrite( $fp, "Testing the rot13 filter which shifts some things around." );

var_dump( stream_filter_remove( $filter ) );
fwrite( $fp, "\nadd some more un-filtered foobar\n" );

rewind( $fp );
fpassthru( $fp );
fclose( $fp );

?>
===DONE===


text:
module.exports = {
    postStyleLoaders: [
        require.resolve('extract-text-webpack-plugin/loader.js') + '?{"omit":1,"extract":true,"remove":true}'
    ],
    styles: {
        'mixins': true,
        'bordered-pulled': true,
        'core': true,
        'fixed-width': true,
        'icons': true,
        'larger': true,
        'list': true,
        'path': true,
        'rotated-flipped': true,
        'animated': true,
        'stacked': true
    }
};


text:
- Fix a crash when loading a new model
- Upgrade `tinygltf` to better support glTF 2.0 spec

# v0.4.1

General bug fixes

# v0.4.0

## Basic HLMS editing
- Texture: diffuse, background diffuse, normal, roughness, metalness
- Diffuse color, background diffuse color, specular color
- Transparent value & mode
- Solid or wireframe
- Two-sided on/off

## Mesh states:
- Show/hide bounding boxes
- Switch visibility

## Other changes
- Fixed a crash when selecting the pistol at the beginning and then loading another model
- Fixed a crash when the material drop-down list emit an index of -1
- Change the clear color from sky blue to black
- Create a new Pbs Datablock for the mesh which doesn't come with materials
- Showing irradiance backgrounds in the beginning
- Using GL3+ as the default rendersystem due to some issues in D3D11 rendersystem

# v0.3.3

- Re-implement Save as Ogre Mesh. Now you can save all meshes of the scene along with Hlms materials
- Don't show the progress bar for each mesh when doing batch conversion
- Give a new default Ogre3D config file
- Remove the temporary v1 mesh while the conversion to v2 mesh is done

# v0.3.2

- Enabled Hi-Dpi support
- Switching between backgrounds: environment/irradiance/black
- Generating correct AABB bounding boxes when importing a wavefront obj

# v0.3.1

- Speed up the process of Wavefront Obj to Ogre3D mesh conversion
- Added a Batch conversion tool to convert multiple obj to ogre mesh at once
- Improved camera panning by to the distance from camera to target object
- Fixed: app hangs when closing the select-folder dialog without selecting any folder

# v0.3.0

### Features

- Support glTF format
- Added Scene tree panel
- Added transformation panel (translation, rotation and scale)
- Support load multiple mesh files from a folder


text:
About Me

                  Hello, my name is Rick Hernandez, writer at KnowRick.com.

                I'm a professional writer, I create source code and meaningful words, life style designer, professional traveler of the world, and fitness enthusiast.

                The purpose of KnowRick.com is to be a source of inspiration and change for those who refuse to settle for anything less than an extraordinary life. On this website, I will openly and passionately share all of the tools, resources, and strategies that I continue to discover that have made a measurable difference to my quality of life, and will for you as well.

                KnowRick.com is dedicated to focusing on helping myself and others live a life of balance. I believe that there needs to be growth in each part of your life that requires constant growth, focus, and commitment.

If you aren't growing, you're dying.

                I invite you to use this website as a resource to help you achieve your goals and live the life you've always dreamed of. Feel free to browse the different posts, pages and categories of this website for whatever fits your needs. If there is anything I can do for you, don't forget to ask, please feel free to subscribe to my newsletter, and get free updates on blog post and information that I don't share publicly.

MY STORY

              Growing up, I was extremely shy and introverted, I was always negative, lazy and I had list of friends that would agree in a heart beat, in turn I started suffering from depression and anxiety and I did not even know it. As you can imagine some of those habits carried over into college, and I continued to try to manage them as much as possible. It got so bad I felt that their was no way out of the deep dark cloud that surrounded me for years. Don't believe me? See why I am no longer employable, and how I ate my black heart out and most importantly find out how I managed to deal with those issues.

November 1, 2014 everything changed!
I looked myself in the mirror with a critical eye overweight, zits all over my face, broke with no money, overworked and nothing to show for it! I finally had enough. I reached the point of an "emotional threshold" and finally made a decision that would shape my life forever.

              "I will NEVER settle for less than I can be, do, give, or create."

              I knew that I was so much more than what I was demonstrating in life. I knew I had potential, and had finally decided to tap into it once an for all. With this in mind everything started turning around for me, I finally figured out what I am suppose to do, and the means of doing so. I created an awesome software application that let's you track your personal goals, stop relying on the university to provide me with education and started taking action on my own self education.

              I quickly came to the conclusion that the only way to change myself would be to face my biggest fears that I have, and this is why this site was born.

              Thank you for taking the time to read this, and I look forward to hearing from you.

              Best regards,

              Rick H.


text:
title: "Trace the history of a function using git"
tags:
  - programming
  - git
---

tl;dr: git log -L :funcname:file

Recently I had the need to know which commit in a [git](https://git-scm.org) repository introduced a certain change to some function's logic.

I already knew how to see the change history of an entire file using `git log --patch -- <file>`.
However, there was a lot of history and the file was big, so `git log` generated lots of output I did not care for.

I wondered if it was possible to only see the change history of some function in a file instead of the entire file's.
Guess what, it is possible: [`git log -L :funcname:file`][Lparameter].

### Example
Let us look at a simple example. Consider we have the following source code in the file `example.c`:
```c
void a_function(double a_parameter) {
    // I wish I was special
    // So very special
    // But I'm a function
}

int some_function(int some_parameter) {
    // Do stuff to the parameters
}

void our_function() {
    // I'm your function
    // Here I am
    // This is me
}

double some_other_function() {
    // I am also here
}
```
Now consider that we made some commits with changes to `example.c`.
For example, here is our hypothetical history of the changes to `example.c` in chronological order, courtesy of `git log --patch --reverse -- example.c`:[^1]
```diff
$ git log --patch --reverse -- example.c
commit dc74fc966e1abaf5ff9b5c2763b59f82b917f190
Author: John Doe <john.doe@domain.com>
Date:   Tue Jan 19 03:14:03 2038 +0000

    Add example.c

diff --git a/example.c b/example.c
new file mode 100644
index 0000000..d44971c
--- /dev/null
+++ b/example.c
@@ -0,0 +1,19 @@
+void a_function(double a_parameter) {
+    // I wish I was special
+    // So very special
+    // But I'm a function
+}
+
+int some_function(int some_parameter) {
+    // Do stuff to the parameters
+}
+
+void our_function() {
+    // I'm your function
+    // Here I am
+    // This is me
+}
+
+double some_other_function() {
+    // I am also here
+}

commit 3851c5f09f8c73859dc0b5feed90677e58e61f97
Author: John Doe <john.doe@domain.com>
Date:   Tue Jan 19 03:14:04 2038 +0000

    Change our_function

diff --git a/example.c b/example.c
index d44971c..e14a2cf 100644
--- a/example.c
+++ b/example.c
@@ -10,8 +10,7 @@ int some_function(int some_parameter) {

 void our_function() {
     // I'm your function
-    // Here I am
-    // This is me
+    // And I'm going through changes
 }

 double some_other_function() {

commit f3373bc8b9bf64c0af4eb6349a4e9789a5721389
Author: John Doe <john.doe@domain.com>
Date:   Tue Jan 19 03:14:05 2038 +0000

    Change a_function

diff --git a/example.c b/example.c
index e14a2cf..3d16bc9 100644
--- a/example.c
+++ b/example.c
@@ -2,6 +2,8 @@ void a_function(double a_parameter) {
     // I wish I was special
     // So very special
     // But I'm a function
+    // This guy is a weirdo
+    // What the hell am I doing here
 }

 int some_function(int some_parameter) {

commit d82c3535871fd47ee7bcb0b0f6ff9f5dd30fa6fb
Author: John Doe <john.doe@domain.com>
Date:   Tue Jan 19 03:14:06 2038 +0000

    Change some_function and some_other_function

diff --git a/example.c b/example.c
index 3d16bc9..dac2191 100644
--- a/example.c
+++ b/example.c
@@ -8,6 +8,7 @@ void a_function(double a_parameter) {

 int some_function(int some_parameter) {
     // Do stuff to the parameters
+    // Return the stuff done to the parameters
 }

 void our_function() {
@@ -17,4 +18,5 @@ void our_function() {

 double some_other_function() {
     // I am also here
+    // Thanks for acknowledging me
 }

commit dde094c8f47c4f7bfa7176e25653120178aaad51
Author: John Doe <john.doe@domain.com>
Date:   Tue Jan 19 03:14:07 2038 +0000

    Change a_function and our_function

diff --git a/example.c b/example.c
index dac2191..f437330 100644
--- a/example.c
+++ b/example.c
@@ -4,6 +4,7 @@ void a_function(double a_parameter) {
     // But I'm a function
     // This guy is a weirdo
     // What the hell am I doing here
+    // I don't belong here
 }

 int some_function(int some_parameter) {
@@ -14,6 +15,7 @@ int some_function(int some_parameter) {
 void our_function() {
     // I'm your function
     // And I'm going through changes
+    // So long and thanks for all the changes
 }

 double some_other_function() {
```
Now let us image we are interested in seeing the evolution of `our_function()`.
Some commits change `our_function()` and some do not.
This is a lot of output we do not care about.
Here comes the `-L` parameter to the rescue, `git log -L :our_function:example.c --reverse`:
```diff
$ git log -L :our_function:example.c --reverse
commit dc74fc966e1abaf5ff9b5c2763b59f82b917f190
Author: John Doe <john.doe@domain.com>
Date:   Tue Jan 19 03:14:03 2038 +0000

    Add example.c

diff --git a/example.c b/example.c
--- /dev/null
+++ b/example.c
@@ -0,0 +11,6 @@
+void our_function() {
+    // I'm your function
+    // Here I am
+    // This is me
+}
+

commit 3851c5f09f8c73859dc0b5feed90677e58e61f97
Author: John Doe <john.doe@domain.com>
Date:   Tue Jan 19 03:14:04 2038 +0000

    Change our_function

diff --git a/example.c b/example.c
--- a/example.c
+++ b/example.c
@@ -11,6 +11,5 @@
 void our_function() {
     // I'm your function
-    // Here I am
-    // This is me
+    // And I'm going through changes
 }

commit dde094c8f47c4f7bfa7176e25653120178aaad51
Author: John Doe <john.doe@domain.com>
Date:   Tue Jan 19 03:14:07 2038 +0000

    Change a_function and our_function

diff --git a/example.c b/example.c
--- a/example.c
+++ b/example.c
@@ -14,5 +15,6 @@
 void our_function() {
     // I'm your function
     // And I'm going through changes
+    // So long and thanks for all the changes
 }
```
Boom! Thanks git. :-)

[^1]: `--patch` shows the patch in the log, and `--reverse` shows the log in chronological order.
[Lparameter]: https://www.git-scm.com/docs/git-log#Documentation/git-log.txt--Lltfuncnamegtltfilegt


text:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginStart="10dp"
    android:layout_marginEnd="10dp">

    <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:elevation="5dp"
        android:layout_marginStart="2dp"
        android:layout_marginEnd="2dp"
        android:layout_marginTop="4dp"
        android:layout_marginBottom="4dp"
        app:cardCornerRadius="16dp">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <FrameLayout
                android:id="@+id/host_item_frame"
                android:layout_width="110dp"
                android:layout_height="110dp"
                android:layout_margin="8dp">

                <View
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:background="@color/blackOverlay"/>

                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:src="@drawable/host_image_place_holder"
                    android:scaleX="0.5"
                    android:scaleY="0.5"
                    android:contentDescription="@string/host_overlay"/>

                <ImageView
                    android:id="@+id/host_item_image"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:contentDescription="@string/host_picture"/>

                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:src="@drawable/host_overlay"
                    android:contentDescription="@string/host_overlay"/>

            </FrameLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_toEndOf="@+id/host_item_frame"
                android:layout_marginStart="5dp"
                android:layout_marginEnd="5dp"
                android:orientation="vertical"
                android:layout_centerVertical="true">

                <TextView
                    android:id="@+id/host_item_name"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginEnd="5dp"
                    android:layout_marginBottom="2dp"
                    android:textSize="15sp"
                    android:textStyle="bold"
                    android:textColor="@color/text_black"
                    android:text="@string/host_item_name_place_holder"/>

                <TextView
                    android:id="@+id/host_item_info"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:textColor="@color/colorPrimary"
                    android:textSize="12sp"
                    android:textStyle="bold"
                    android:text="@string/host_item_info_place_holder" />

            </LinearLayout>

            <ImageView
                android:id="@+id/host_item_mail"
                android:layout_width="45dp"
                android:layout_height="45dp"
                android:layout_marginEnd="-10dp"
                android:layout_marginBottom="-3dp"
                android:layout_alignBottom="@id/host_item_frame"
                android:layout_alignEnd="@id/host_item_frame"
                android:src="@drawable/mail"
                android:contentDescription="@string/host_mail_image"/>

        </RelativeLayout>

    </android.support.v7.widget.CardView>

</LinearLayout>