0.0.9-p9 • Published 25 days ago

gina v0.0.9-p9

Weekly downloads
5
License
MIT
Repository
github
Last release
25 days ago

Gina

GitHub version npm version

Gina I/O - Node.js MVC and Event Driven framework

This is a preview release. We are looking for people to help us test and improve Windows support. Meanwhile, Windows users can use Docker or an alternative to run Gina and their projects.

Some commands or features might not work since the framework is still under development & testing

We have some applications using the framework in production and we are improving our code in order to release the 1.0.0 version: which should come by the end of 2022. Thank you for your patience.

Philosophy behind

Gina was designed to be accessible, flexible, scalable and maintainable. Our main purpose was to allow developers to create easier and faster web applications.

Gina comes with essential features at this moment, but most of the things we don't have yet can be replaced by some alternatives written in other languages like: Ruby, PHP, .net, Python or C++. You are free to use such alternatives until we implement similar features.

Note that Gina does not rely on Connect or ExpressJS, still, you can use all plugins or middlewares designed for those frameworks ;-)

Getting started with Gina I/O

Installing Gina

Gina aims to be at the same time a framework, a deployment and monitoring environment for your projects. So, to fully enjoy Gina, we recommend that you install it with the -g option.

For Microsoft Windows, you might have to run the command line with Administrator privileges.

npm install -g gina@latest

You can check if Gina is properly installed

gina version

NB.: This is a shortcut for gina framework:version

Starting the framework

Gina is at the same time a framework and a server. By starting the framework, you will also start the server.

gina start

NB.: This is an alias for gina framework:start

Initializing a project

A project is a collection of bundles (applicaitons or services). See it as a representation of your domain.

Let's create our first project and install Gina.

mkdir myproject && cd myproject

Then you need to initialize your project

On Windows from the Windows CLI, you might need admin privileges.

gina project:add @myproject

If you need to remove this project later

gina project:rm @myproject

Creating a bundle (application or service)

A project is a set of bundles. Gina lets you create all kinds of bundles :

  • API & web services
  • frontend & backend applications
  • command lines

Note that the default bundle type is API.

Ok ! Let's do it !

gina bundle:add frontend @myproject

NB.: If you are launching the command from the project directory, you don't need @myproject. The same goes for all bundles commands.

We have just created a frontend application that will host our homepage. You will find all bundle sources under myproject/src.

You can start the bundle with the following command:

gina bundle:start frontend @myproject

Now, visit http://127.0.0.1:3100/ to check your homepage. Isn't it sexy !?

If you need to stop your bundle

gina bundle:stop frontend @myproject

If you need to restart you bundle

gina bundle:restart frontend @myproject

Adding templates

The default bundle renders a JSON representation of a "Hello World" message.

Let's add a view on our frontend

gina view:add frontend @myproject

Then restart your bundle

gina bundle:restart frontend @myproject

Now edit the home control in src/frontend/controllers/controller.js so that you can have self.render(...) instead of self.renderJSON(...)

Once it's done, you just need to refresh your browser.

Gina is shipped with Swig as the default template engine. If you are more comfortable with another template engine, you can use your own.

Setting your default environment

Please, note that you have 2 types of environments : one for the framework, and one for your project & your bundles.

By default, Gina (the framework) comes with 2 environments : dev and prod. The default is prod. if you are contributing to the framework or prototyping your application or service, we advise using the dev environment.

gina framework:set --env=dev 

You can check which are the environments set for your projects

gina env:list

or for a particular project

gina env:list @myproject

NB.: when adding an environement, you will do so for the entire project.

Setting your application starting environment on runtime

This method does not memorize the selected environment as the default one for your application

You can have multiple environments for your project and decide to pick one as the starting env by using --env=your_env every time you have to run a bundle.

gina bundle:start frontend @myproject --env=prod

NB.: Omitting --env=<env> will fallback to your project default environment.

Setting your project or your application default environment

For the entire project & for all bundles inside by default

gina env:use prod @myproject

NB.: If you need to change it for a particular bundle, you still can do it at runtime using --env=<your env> to override the default settings. This will not set <your env>as the default environment for the whole project.

Other operations you can apply to your environment:

Adding a new environment for your project

gina env:add staging @myproject

Removing an existing environment for your project

gina env:rm staging @myproject

Defining an existing environment as development (you can only have one like this)

gina env:link-dev <your new dev env>

Getting the logs

You will also get logs related to your running bundles.

gina tail

NB.: This is an alias for gina framework:tail

By default, Gina does not store logs. Logs are treated like any other events then printed out to the process.stdout.

This means that if you need Gina to handle logs storage, you need a logger container (or transport) to receive and output your logs.

Note that this is optional since logs are output like for other frameworks: you can catch those while writing your daemon starting script on you production server.

So to handle log storage for your application, you have 2 options. 1) Old school way

gina bundle:start frontend @myproject > /usr/local/var/log/gina/frontend.myproject.domain.log 2>&1

You can now check

tail - f /usr/local/var/log/gina/frontend.myproject.domain.log

2) Create your own container/transport by extending gina default container

If you still want gina to handle logs storage, you are lucky, we have developped a file container/transport that you just need to enable.

This feature is still experimental.

You can edit ~/.gina/user/extensions/logger/default/config.json to add "file" container to the flows.

You might need to restart the gina :

gina restart

NB.: For development purposes, using the CLI gina tail is still a better option because you will have a better overview of what is really going on for all your application at once & for the framework.

HTTPS, HTTP/2 and certificates

Installing a certificate

You now want to install a certificate for your project in order to run your project with HTTPS scheme or with HTTP/2 protocol ? At this moment, Gina does not generate a cetificate for you, but you can use a service like sslforfree to genreate a free 90 days certificate, then install it into your Gina home directory depending on the scope of your host (targeted machine: local or production). SSL For Free will provide you with a folder named with the domain you have used to setup your certificate. You just need to paste its content into the right location.

The directory should be located @~/.gina/certificates/scopes. By default, local scope is set. But when you will go live, you should set the scope to production and paste your certificate into the right folder. E.g: The myproject.domain folder should be placed into:

  • ~/.gina/certificates/scopes/local for your dev host
  • ~/.gina/certificates/scopes/production for you production host

Enable HTTPS scheme

NB.: certificate is required. By enabling HTTPS, you will do so for your entire poroject by default, but you can later set one per application. And if you want to run your experimental HTTP2 implementation, you will need HTTS scheme.

Check what is your actual scheme & protocol status

gina protocol:list @myproject

Setup HTTPS for the whole project

gina protocol:set @myproject

Setup HTTPS for a specific application

gina protocol:set frontend @myproject

Now, you just need to restart your bundle. You should tail your logs in order to get more details if an error is preventing you from starting.

gina tail

Open another terminal window

gina bundle:restart frontend @myproject

Depending on how you have managed to get your certificate for you dev environment, you might get this kind of mesaage preventing your application to start :

Error: unable to get issuer certificate
    at TLSSocket.onConnectSecure (node:_tls_wrap:1530:34)
    at TLSSocket.emit (node:events:390:28)
    at TLSSocket._finishInit (node:_tls_wrap:944:8)
    at TLSWrap.ssl.onhandshakedone (node:_tls_wrap:725:12) 

Do not panic, and follow the steps provided in the following section.

Local scope & certificate consideration

Ignore the following instructions if you can start your application without any certificate errors.

This is important and you will have to take additional steps to make your certificate fully valid while developping on your local/dev host. Since in most cases you will not have the Root Certificate included in your certificate, you need to generate a correct certificate including the Root Certificate. For production, it will not be a problem since the Root certificate is provided by the client browser.

Let say that you have downloded your certificates from Ssl For Free which you have then placed under: ~/.gina/certificates/scopes/local/myproject.domain.

Step 1 Go to the folder

cd ~/.gina/certificates/scopes/local/myproject.domain

List your files

ls

Output should look like

ca_bundle.crt	certificate.crt	private.key
cat certificate.crt

Copy the content of certificate.crt

Visit https://whatsmychaincert.com Go to the Generate the Correct Chain tool. Paste the content you have just copied out of your certificate.crt into the field, then do not forget to check the option Include Root Certificate.

It will download a chained certificate. Rename it to certificate.chained+root.crt and copy/paste the file to your certificates location (~/.gina/certificates/scopes/local/myproject.domain)

Step 2 You now need to combine your private key with your new certificate Still @ ~/.gina/certificates/scopes/local/myproject.domain ?

cat private.key certificate.chained+root.crt > certificate.combined.pem

Final step

Go to your project src to add or edit your bundle config the following file : /path/to/myproject/src/frontend/config/settings.server.credentials.dev.json Where frontend is you bundle/application

We just need to override Gina default certificate paths

{
    // "privateKey": "{GINA_HOMEDIR}/certificates/scopes/{scope}/{host}/private.key",
    "certificate": "{GINA_HOMEDIR}/certificates/scopes/{scope}/{host}/certificate.chained+root.crt",
    "ca": "{GINA_HOMEDIR}/certificates/scopes/{scope}/{host}/certificate.combined.pem"
}

Do this for all of you myproject's bundles, then restart your bundles

gina bundle:restart @myproject

Troubleshooting

I can't start my bundle

Are you starting for the first time ?

  • If you are a Windows user, make sure you are running your command line with sufficient permission; like "launching your terminal as administrator".
  • If you have just cloned Gina from GitHub, don't forget to run from the project root :
node node_modules/gina/script/pre_install.js
node node_modules/gina/script/post_install.js

Are you trying to restart after a crash ?

Before v0.1.0, Gina used 2 processes for each bundle: one master, one slave. Once an exception is thrown and the program crashes, one of the 2 processes can remain in the tasks/processes list.

Gina only uses one process per bundle or one per project if you have decided to merge bundles execution. This has been mostly observed for Windows users.

  • If you are on a POSIX OS, you should look for gina, then kill it !

  • If you are on a Windows, look for node.exe or Event I/O Handler, then kill it !

After this, try again to start, it should run better.

More documentation and tutorials are coming soon !

License (MIT)

Copyright © 2009-2022 Rhinostone

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

0.1.6-alpha.37

25 days ago

0.1.6-alpha.31

26 days ago

0.1.6-alpha.32

26 days ago

0.1.6-alpha.33

26 days ago

0.1.6-alpha.34

26 days ago

0.1.6-alpha.35

26 days ago

0.1.6-alpha.36

26 days ago

0.1.6-alpha.28

26 days ago

0.1.6-alpha.29

26 days ago

0.1.6-alpha.26

26 days ago

0.1.6-alpha.27

26 days ago

0.1.6-alpha.30

26 days ago

0.1.6-alpha.24

27 days ago

0.1.6-alpha.25

27 days ago

0.1.6-alpha.23

2 months ago

0.1.6-alpha.22

2 months ago

0.1.6-alpha.20

3 months ago

0.1.6-alpha.21

2 months ago

0.1.6-alpha.19

3 months ago

0.1.6-alpha.18

3 months ago

0.1.6-alpha.17

6 months ago

0.1.6-alpha.10

6 months ago

0.1.6-alpha.11

6 months ago

0.1.6-alpha.12

6 months ago

0.1.6-alpha.13

6 months ago

0.1.6-alpha.14

6 months ago

0.1.6-alpha.15

6 months ago

0.1.6-alpha.16

6 months ago

0.1.6-alpha.5

7 months ago

0.1.6-alpha.9

6 months ago

0.1.6-alpha.8

6 months ago

0.1.6-alpha.7

6 months ago

0.1.6-alpha.6

6 months ago

0.1.6-alpha.4

7 months ago

0.1.2-alpha.3

10 months ago

0.1.2-alpha.2

10 months ago

0.1.2-alpha.5

10 months ago

0.1.2-alpha.4

10 months ago

0.1.2-alpha.1

10 months ago

0.1.5-alpha.2

10 months ago

0.1.5-alpha.1

10 months ago

0.1.4-alpha.1

10 months ago

0.1.4-alpha.2

10 months ago

0.1.4-alpha.3

10 months ago

0.1.4-alpha.4

10 months ago

0.1.4-alpha.5

10 months ago

0.1.4-alpha.6

10 months ago

0.1.4-alpha.7

10 months ago

0.1.6-alpha.1

10 months ago

0.1.6-alpha.3

10 months ago

0.1.6-alpha.2

10 months ago

0.1.3-alpha.1

10 months ago

0.1.1-alpha.240

1 year ago

0.1.1-alpha.248

12 months ago

0.1.1-alpha.247

1 year ago

0.1.1-alpha.246

1 year ago

0.1.1-alpha.245

1 year ago

0.1.1-alpha.244

1 year ago

0.1.1-alpha.243

1 year ago

0.1.1-alpha.242

1 year ago

0.1.1-alpha.241

1 year ago

0.1.1-alpha.239

1 year ago

0.1.1-alpha.238

1 year ago

0.1.1-alpha.226

1 year ago

0.1.1-alpha.225

1 year ago

0.1.1-alpha.224

1 year ago

0.1.1-alpha.223

1 year ago

0.1.1-alpha.222

1 year ago

0.1.1-alpha.221

1 year ago

0.1.1-alpha.220

1 year ago

0.1.1-alpha.229

1 year ago

0.1.1-alpha.228

1 year ago

0.1.1-alpha.227

1 year ago

0.1.1-alpha.237

1 year ago

0.1.1-alpha.236

1 year ago

0.1.1-alpha.235

1 year ago

0.1.1-alpha.234

1 year ago

0.1.1-alpha.233

1 year ago

0.1.1-alpha.232

1 year ago

0.1.1-alpha.231

1 year ago

0.1.1-alpha.230

1 year ago

0.1.1-alpha.204

1 year ago

0.1.1-alpha.203

1 year ago

0.1.1-alpha.202

1 year ago

0.1.1-alpha.201

1 year ago

0.1.1-alpha.200

1 year ago

0.1.1-alpha.209

1 year ago

0.1.1-alpha.208

1 year ago

0.1.1-alpha.207

1 year ago

0.1.1-alpha.206

1 year ago

0.1.1-alpha.205

1 year ago

0.1.1-alpha.215

1 year ago

0.1.1-alpha.214

1 year ago

0.1.1-alpha.213

1 year ago

0.1.1-alpha.212

1 year ago

0.1.1-alpha.211

1 year ago

0.1.1-alpha.210

1 year ago

0.1.1-alpha.219

1 year ago

0.1.1-alpha.218

1 year ago

0.1.1-alpha.217

1 year ago

0.1.1-alpha.216

1 year ago

0.1.1-alpha.185

1 year ago

0.1.1-alpha.184

1 year ago

0.1.1-alpha.183

1 year ago

0.1.1-alpha.182

1 year ago

0.1.1-alpha.181

1 year ago

0.1.1-alpha.180

1 year ago

0.1.1-alpha.189

1 year ago

0.1.1-alpha.188

1 year ago

0.1.1-alpha.187

1 year ago

0.1.1-alpha.186

1 year ago

0.1.1-alpha.196

1 year ago

0.1.1-alpha.195

1 year ago

0.1.1-alpha.194

1 year ago

0.1.1-alpha.193

1 year ago

0.1.1-alpha.192

1 year ago

0.1.1-alpha.191

1 year ago

0.1.1-alpha.190

1 year ago

0.1.1-alpha.199

1 year ago

0.1.1-alpha.198

1 year ago

0.1.1-alpha.197

1 year ago

0.1.1-alpha.179

1 year ago

0.1.1-alpha.178

1 year ago

0.1.1-alpha.177

1 year ago

0.1.1-alpha.159

1 year ago

0.1.1-alpha.158

1 year ago

0.1.1-alpha.163

1 year ago

0.1.1-alpha.162

1 year ago

0.1.1-alpha.161

1 year ago

0.1.1-alpha.160

1 year ago

0.1.1-alpha.169

1 year ago

0.1.1-alpha.168

1 year ago

0.1.1-alpha.167

1 year ago

0.1.1-alpha.166

1 year ago

0.1.1-alpha.165

1 year ago

0.1.1-alpha.164

1 year ago

0.1.1-alpha.174

1 year ago

0.1.1-alpha.173

1 year ago

0.1.1-alpha.172

1 year ago

0.1.1-alpha.171

1 year ago

0.1.1-alpha.170

1 year ago

0.1.1-alpha.176

1 year ago

0.1.1-alpha.175

1 year ago

0.1.1-alpha.149

1 year ago

0.1.1-alpha.148

1 year ago

0.1.1-alpha.147

1 year ago

0.1.1-alpha.152

1 year ago

0.1.1-alpha.151

1 year ago

0.1.1-alpha.150

1 year ago

0.1.1-alpha.157

1 year ago

0.1.1-alpha.156

1 year ago

0.1.1-alpha.155

1 year ago

0.1.1-alpha.154

1 year ago

0.1.1-alpha.153

1 year ago

0.1.1-alpha.141

2 years ago

0.1.1-alpha.140

2 years ago

0.1.1-alpha.146

2 years ago

0.1.1-alpha.145

2 years ago

0.1.1-alpha.144

2 years ago

0.1.1-alpha.143

2 years ago

0.1.1-alpha.142

2 years ago

0.1.1-alpha.127

2 years ago

0.1.1-alpha.126

2 years ago

0.1.1-alpha.125

2 years ago

0.1.1-alpha.124

2 years ago

0.1.1-alpha.122

2 years ago

0.1.1-alpha.129

2 years ago

0.1.1-alpha.128

2 years ago

0.1.1-alpha.130

2 years ago

0.1.1-alpha.138

2 years ago

0.1.1-alpha.137

2 years ago

0.1.1-alpha.136

2 years ago

0.1.1-alpha.135

2 years ago

0.1.1-alpha.134

2 years ago

0.1.1-alpha.133

2 years ago

0.1.1-alpha.132

2 years ago

0.1.1-alpha.131

2 years ago

0.1.1-alpha.139

2 years ago

0.1.1-alpha.121

2 years ago

0.1.1-alpha.120

2 years ago

0.1.1-alpha.116

2 years ago

0.1.1-alpha.115

2 years ago

0.1.1-alpha.114

2 years ago

0.1.1-alpha.113

2 years ago

0.1.1-alpha.119

2 years ago

0.1.1-alpha.118

2 years ago

0.1.1-alpha.117

2 years ago

0.1.1-alpha.8

2 years ago

0.1.1-alpha.7

2 years ago

0.1.1-alpha.9

2 years ago

0.1.1-alpha.2

2 years ago

0.1.1-alpha.1

2 years ago

0.1.1-alpha.4

2 years ago

0.1.1-alpha.3

2 years ago

0.1.1-alpha.6

2 years ago

0.1.1-alpha.5

2 years ago

0.1.1-alpha.123

2 years ago

0.1.1-alpha.105

2 years ago

0.1.1-alpha.104

2 years ago

0.1.1-alpha.103

2 years ago

0.1.1-alpha.102

2 years ago

0.1.1-alpha.101

2 years ago

0.1.1-alpha.100

2 years ago

0.1.1-alpha.11

2 years ago

0.1.1-alpha.10

2 years ago

0.1.1-alpha.109

2 years ago

0.1.1-alpha.108

2 years ago

0.1.1-alpha.107

2 years ago

0.1.1-alpha.106

2 years ago

0.1.1-alpha.19

2 years ago

0.1.1-alpha.18

2 years ago

0.1.1-alpha.17

2 years ago

0.1.1-alpha.16

2 years ago

0.1.1-alpha.15

2 years ago

0.1.1-alpha.14

2 years ago

0.1.1-alpha.13

2 years ago

0.1.1-alpha.12

2 years ago

0.1.1-alpha.112

2 years ago

0.1.1-alpha.111

2 years ago

0.1.1-alpha.110

2 years ago

0.1.1-alpha.33

2 years ago

0.1.1-alpha.32

2 years ago

0.1.1-alpha.31

2 years ago

0.1.1-alpha.30

2 years ago

0.1.1-alpha.39

2 years ago

0.1.1-alpha.38

2 years ago

0.1.1-alpha.37

2 years ago

0.1.1-alpha.36

2 years ago

0.1.1-alpha.35

2 years ago

0.1.1-alpha.34

2 years ago

0.1.1-alpha.22

2 years ago

0.1.1-alpha.21

2 years ago

0.1.1-alpha.20

2 years ago

0.1.1-alpha.29

2 years ago

0.1.1-alpha.28

2 years ago

0.1.1-alpha.27

2 years ago

0.1.1-alpha.26

2 years ago

0.1.1-alpha.25

2 years ago

0.1.1-alpha.24

2 years ago

0.1.1-alpha.23

2 years ago

0.1.1-alpha.55

2 years ago

0.1.1-alpha.54

2 years ago

0.1.1-alpha.53

2 years ago

0.1.1-alpha.52

2 years ago

0.1.1-alpha.51

2 years ago

0.1.1-alpha.50

2 years ago

0.1.1-alpha.59

2 years ago

0.1.1-alpha.58

2 years ago

0.1.1-alpha.57

2 years ago

0.1.1-alpha.56

2 years ago

0.1.1-alpha.44

2 years ago

0.1.1-alpha.43

2 years ago

0.1.1-alpha.42

2 years ago

0.1.1-alpha.41

2 years ago

0.1.1-alpha.40

2 years ago

0.1.1-alpha.49

2 years ago

0.1.1-alpha.48

2 years ago

0.1.1-alpha.47

2 years ago

0.1.1-alpha.46

2 years ago

0.1.1-alpha.45

2 years ago

0.1.1-alpha.80

2 years ago

0.1.1-alpha.77

2 years ago

0.1.1-alpha.76

2 years ago

0.1.1-alpha.75

2 years ago

0.1.1-alpha.74

2 years ago

0.1.1-alpha.73

2 years ago

0.1.1-alpha.72

2 years ago

0.1.1-alpha.71

2 years ago

0.1.1-alpha.70

2 years ago

0.1.1-alpha.79

2 years ago

0.1.1-alpha.78

2 years ago

0.1.1-alpha.66

2 years ago

0.1.1-alpha.65

2 years ago

0.1.1-alpha.64

2 years ago

0.1.1-alpha.63

2 years ago

0.1.1-alpha.62

2 years ago

0.1.1-alpha.61

2 years ago

0.1.1-alpha.60

2 years ago

0.1.1-alpha.69

2 years ago

0.1.1-alpha.68

2 years ago

0.1.1-alpha.67

2 years ago

0.1.1-alpha.99

2 years ago

0.1.1-alpha.98

2 years ago

0.1.1-alpha.97

2 years ago

0.1.1-alpha.96

2 years ago

0.1.1-alpha.95

2 years ago

0.1.1-alpha.94

2 years ago

0.1.1-alpha.93

2 years ago

0.1.1-alpha.92

2 years ago

0.1.1-alpha.91

2 years ago

0.1.1-alpha.90

2 years ago

0.1.1-alpha.88

2 years ago

0.1.1-alpha.87

2 years ago

0.1.1-alpha.86

2 years ago

0.1.1-alpha.85

2 years ago

0.1.1-alpha.84

2 years ago

0.1.1-alpha.83

2 years ago

0.1.1-alpha.82

2 years ago

0.1.1-alpha.81

2 years ago

0.1.1-alpha.89

2 years ago

0.1.0

2 years ago

0.0.9-p91c

7 years ago

0.0.9-p91b

7 years ago

0.0.9-p91a

7 years ago

0.0.9-p91

7 years ago

0.0.9-p90t

7 years ago

0.0.9-p90s

7 years ago

0.0.9-p90r

7 years ago

0.0.9-p90q

7 years ago

0.0.9-p90p

7 years ago

0.0.9-p90o

7 years ago

0.0.9-p90n

7 years ago

0.0.9-p90m

7 years ago

0.0.9-p90l

7 years ago

0.0.9-p90k

7 years ago

0.0.9-p90j

7 years ago

0.0.9-p90i

7 years ago

0.0.9-p90h

7 years ago

0.0.9-p90g

7 years ago

0.0.9-p90f

7 years ago

0.0.9-p90e

7 years ago

0.0.9-p90d

7 years ago

0.0.9-p90c

7 years ago

0.0.9-p90b

7 years ago

0.0.9-p90a

7 years ago

0.0.9-p90

7 years ago

0.0.9-p89o

7 years ago

0.0.9-p89n

7 years ago

0.0.9-p89m

7 years ago

0.0.9-p89l

7 years ago

0.0.9-p89k

7 years ago

0.0.9-p89j

7 years ago

0.0.9-p89i

7 years ago

0.0.9-p89h

7 years ago

0.0.9-p89g

7 years ago

0.0.9-p89f

7 years ago

0.0.9-p89e

7 years ago

0.0.9-p89d

7 years ago

0.0.9-p89c

7 years ago

0.0.9-p89b

7 years ago

0.0.9-p89a

7 years ago

0.0.9-p89

7 years ago

0.0.9-p88g

7 years ago

0.0.9-p88f

7 years ago

0.0.9-p88e

8 years ago

0.0.9-p88d

8 years ago

0.0.9-p88c

8 years ago

0.0.9-p88b

8 years ago

0.0.9-p88a

8 years ago

0.0.9-p88

8 years ago

0.0.9-p87

8 years ago

0.0.9-p86a

8 years ago

0.0.9-p86

8 years ago

0.0.9-p85v

8 years ago

0.0.9-p85u

8 years ago

0.0.9-p85t

8 years ago

0.0.9-p85s

8 years ago

0.0.9-p85r

8 years ago

0.0.9-p85q

8 years ago

0.0.9-p85p

8 years ago

0.0.9-p85o

8 years ago

0.0.9-p85n

8 years ago

0.0.9-p85m

8 years ago

0.0.9-p85l

8 years ago

0.0.9-p85k

8 years ago

0.0.9-p85j

8 years ago

0.0.9-p85i

8 years ago

0.0.9-p85h

8 years ago

0.0.9-p85g

8 years ago

0.0.9-p85f

8 years ago

0.0.9-p85e

8 years ago

0.0.9-p85d

8 years ago

0.0.9-p85c

8 years ago

0.0.9-p85b

8 years ago

0.0.9-p85a

8 years ago

0.0.9-p85

8 years ago

0.0.9-p84

8 years ago

0.0.9-p83z

8 years ago

0.0.9-p83y

8 years ago

0.0.9-p83v

8 years ago

0.0.9-p83u

8 years ago

0.0.9-p83t

8 years ago

0.0.9-p83s

8 years ago

0.0.9-p83r

8 years ago

0.0.9-p83q

8 years ago

0.0.9-p83p

8 years ago

0.0.9-p83o

8 years ago

0.0.9-p83n

8 years ago

0.0.9-p83m

8 years ago

0.0.9-p83l

8 years ago

0.0.9-p83k

8 years ago

0.0.9-p83j

8 years ago

0.0.9-p83i

8 years ago

0.0.9-p83h

8 years ago

0.0.9-p83g

8 years ago

0.0.9-p83f

8 years ago

0.0.9-p83e

8 years ago

0.0.9-p83d

8 years ago

0.0.9-p83c

8 years ago

0.0.9-p83b

8 years ago

0.0.9-p83a

8 years ago

0.0.9-p83

8 years ago

0.0.9-p82c

8 years ago

0.0.9-p82b

8 years ago

0.0.9-p82a

8 years ago

0.0.9-p82

8 years ago

0.0.9-p81g

8 years ago

0.0.9-p81f

8 years ago

0.0.9-p81e

8 years ago

0.0.9-p81d

8 years ago

0.0.9-p81c

8 years ago

0.0.9-p81b

8 years ago

0.0.9-p81a

8 years ago

0.0.9-p81

8 years ago

0.0.9-p80

8 years ago

0.0.9-p79j

8 years ago

0.0.9-p79i

8 years ago

0.0.9-p79h

8 years ago

0.0.9-p79g

8 years ago

0.0.9-p79f

8 years ago

0.0.9-p79d

8 years ago

0.0.9-p79c

8 years ago

0.0.9-p79b

8 years ago

0.0.9-p79a

8 years ago

0.0.9-p79

8 years ago

0.0.9-p78e

8 years ago

0.0.9-p78d

8 years ago

0.0.9-p78c

8 years ago

0.0.9-p78b

8 years ago

0.0.9-p78a

8 years ago

0.0.9-p78

8 years ago

0.0.9-p77m48

8 years ago

0.0.9-p77m47

8 years ago

0.0.9-p77m46

8 years ago

0.0.9-p77m45

8 years ago

0.0.9-p77m44

8 years ago

0.0.9-p77m43

8 years ago

0.0.9-p77m42

8 years ago

0.0.9-p77m41

8 years ago

0.0.9-p77m40

8 years ago

0.0.9-p77m39

8 years ago

0.0.9-p77m38

8 years ago

0.0.9-p77m37

8 years ago

0.0.9-p77m36

8 years ago

0.0.9-p77m35

8 years ago

0.0.9-p77m34

8 years ago

0.0.9-p77m33

8 years ago

0.0.9-p77m32

8 years ago

0.0.9-p77m31

8 years ago

0.0.9-p77m30

8 years ago

0.0.9-p77m29

8 years ago

0.0.9-p77m28

8 years ago

0.0.9-p77m27

8 years ago

0.0.9-p77m26

8 years ago

0.0.9-p77m25

8 years ago

0.0.9-p77m24

8 years ago

0.0.9-p77m23

8 years ago

0.0.9-p77m22

8 years ago

0.0.9-p77m21

8 years ago

0.0.9-p77m20

8 years ago

0.0.9-p77m19

8 years ago

0.0.9-p77m18

8 years ago

0.0.9-p77m17

8 years ago

0.0.9-p77m16

8 years ago

0.0.9-p77m15

8 years ago

0.0.9-p77m14

8 years ago

0.0.9-p77m13

8 years ago

0.0.9-p77m12

8 years ago

0.0.9-p77m11

8 years ago

0.0.9-p77m10

8 years ago

0.0.9-p77m9

8 years ago

0.0.9-p77m8

8 years ago

0.0.9-p77m7

8 years ago

0.0.9-p77m6

8 years ago

0.0.9-p77m5

8 years ago

0.0.9-p77m4

8 years ago

0.0.9-p77m3

8 years ago

0.0.9-p77m2

8 years ago

0.0.9-p77m1

8 years ago

0.0.9-p77m

8 years ago

0.0.9-p77l

8 years ago

0.0.9-p77k

8 years ago

0.0.9-p77j

8 years ago

0.0.9-p77i

8 years ago

0.0.9-p77h

8 years ago

0.0.9-p77g

8 years ago

0.0.9-p77f

8 years ago

0.0.9-p77e

8 years ago

0.0.9-p77d

8 years ago

0.0.9-p77c

8 years ago

0.0.9-p77b

8 years ago

0.0.9-p77a

8 years ago

0.0.9-p77

8 years ago

0.0.9-p76

8 years ago

0.0.9-p75a

8 years ago

0.0.9-p75

8 years ago

0.0.9-p74

8 years ago

0.0.9-p73

8 years ago

0.0.9-p72

8 years ago

0.0.9-p71a

8 years ago

0.0.9-p71

8 years ago

0.0.9-p70

8 years ago

0.0.9-p69u

8 years ago

0.0.9-p69t

8 years ago

0.0.9-p69s

8 years ago

0.0.9-p69r

8 years ago

0.0.9-p69q

8 years ago

0.0.9-p69p

8 years ago

0.0.9-p69o

8 years ago

0.0.9-p69n

8 years ago

0.0.9-p69m

8 years ago

0.0.9-p69l

8 years ago

0.0.9-p69k

8 years ago

0.0.9-p69j

8 years ago

0.0.9-p69i

8 years ago

0.0.9-p69h

8 years ago

0.0.9-p69g

8 years ago

0.0.9-p69f

8 years ago

0.0.9-p69e

8 years ago

0.0.9-p69d

8 years ago

0.0.9-p69c

8 years ago

0.0.9-p69b

8 years ago

0.0.9-p69a

8 years ago

0.0.9-p69

8 years ago

0.0.9-p68

8 years ago

0.0.9-p67

8 years ago

0.0.9-p66

8 years ago

0.0.9-p65

9 years ago

0.0.9-p64

9 years ago

0.0.9-p63

9 years ago

0.0.9-p62

9 years ago

0.0.9-p61

9 years ago

0.0.9-p60

9 years ago

0.0.9-p59

9 years ago

0.0.9-p58

9 years ago

0.0.9-p57

9 years ago

0.0.9-p56

9 years ago

0.0.9-p55

9 years ago

0.0.9-p54

9 years ago

0.0.9-p53

9 years ago

0.0.9-p52

9 years ago

0.0.9-p51

9 years ago

0.0.9-p50

9 years ago

0.0.9-p49

9 years ago

0.0.9-p48

9 years ago

0.0.9-p47

9 years ago

0.0.9-p46

9 years ago

0.0.9-p45

9 years ago

0.0.9-p44

9 years ago

0.0.9-p43

9 years ago

0.0.9-p42

9 years ago

0.0.9-p41

9 years ago

0.0.9-p40

9 years ago

0.0.9-p39

9 years ago

0.0.9-p38

9 years ago

0.0.9-p37

9 years ago

0.0.9-p36

9 years ago

0.0.9-p35

9 years ago

0.0.9-p34

9 years ago

0.0.9-p33

9 years ago

0.0.9-p32

9 years ago

0.0.9-p31

9 years ago

0.0.9-p30

9 years ago

0.0.9-p29

9 years ago

0.0.9-p28

9 years ago

0.0.9-p27

9 years ago

0.0.9-p26

9 years ago

0.0.9-p25

9 years ago

0.0.9-p24

9 years ago

0.0.9-p23

9 years ago

0.0.9-p22

9 years ago

0.0.9-p21

9 years ago

0.0.9-p20

9 years ago

0.0.9-p19

9 years ago

0.0.9-p18

9 years ago

0.0.9-p17

9 years ago

0.0.9-p16

9 years ago

0.0.9-p15

9 years ago

0.0.9-p14

9 years ago

0.0.9-p13

9 years ago

0.0.9-p12

9 years ago

0.0.9-p11

9 years ago

0.0.9-p10

9 years ago

0.0.9-p9

10 years ago