You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@openwhisk.apache.org by GitBox <gi...@apache.org> on 2018/03/09 22:41:02 UTC

[GitHub] mrutkows closed pull request #784: Adding support for package binding from any namespace and declaring public packages

mrutkows closed pull request #784: Adding support for package binding from any namespace and declaring public packages
URL: https://github.com/apache/incubator-openwhisk-wskdeploy/pull/784
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/parsers/manifest_parser.go b/parsers/manifest_parser.go
index 63a55c19..3a626e70 100644
--- a/parsers/manifest_parser.go
+++ b/parsers/manifest_parser.go
@@ -328,6 +328,15 @@ func (dm *YAMLParser) ComposePackage(pkg Package, packageName string, filePath s
 	// /namespace instead of /namespace/package
 	if strings.ToLower(pag.Name) == DEFAULT_PACKAGE {
 		wskprint.PrintlnOpenWhiskInfo(wski18n.T(wski18n.ID_MSG_DEFAULT_PACKAGE))
+		// when a package is marked public with "Public: true" in manifest file
+		// the package is visible to anyone and created with publish state
+		// set to shared otherwise publish state is set to private
+	} else if pkg.Public {
+		warningMsg := wski18n.T(wski18n.ID_WARN_PACKAGE_IS_PUBLIC_X_package_X,
+			map[string]interface{}{
+				wski18n.KEY_PACKAGE: pag.Name})
+		wskprint.PrintlnOpenWhiskWarning(warningMsg)
+		pag.Publish = &(pkg.Public)
 	}
 
 	return pag, nil
diff --git a/parsers/manifest_parser_test.go b/parsers/manifest_parser_test.go
index dcdff168..6b3dcca6 100644
--- a/parsers/manifest_parser_test.go
+++ b/parsers/manifest_parser_test.go
@@ -50,10 +50,12 @@ const (
 	TEST_MSG_ACTION_FUNCTION_RUNTIME_ERROR_EXPECTED = "Manifest [%s]: Expected runtime error."
 
 	// local error messages
-	TEST_ERROR_MANIFEST_PARSE_FAILURE   = "Manifest [%s]: Failed to parse."
-	TEST_ERROR_MANIFEST_READ_FAILURE    = "Manifest [%s]: Failed to ReadFile()."
-	TEST_ERROR_MANIFEST_DATA_UNMARSHALL = "Manifest [%s]: Failed to Unmarshall manifest."
-	TEST_ERROR_COMPOSE_ACTION_FAILURE   = "Manifest [%s]: Failed to compose actions."
+	TEST_ERROR_MANIFEST_PARSE_FAILURE     = "Manifest [%s]: Failed to parse."
+	TEST_ERROR_MANIFEST_READ_FAILURE      = "Manifest [%s]: Failed to ReadFile()."
+	TEST_ERROR_MANIFEST_DATA_UNMARSHALL   = "Manifest [%s]: Failed to Unmarshall manifest."
+	TEST_ERROR_COMPOSE_ACTION_FAILURE     = "Manifest [%s]: Failed to compose actions."
+	TEST_ERROR_COMPOSE_PACKAGE_FAILURE    = "Manifest [%s]: Failed to compose packages."
+	TEST_ERROR_COMPOSE_DEPENDENCY_FAILURE = "Manifest [%s]: Failed to compose dependencies."
 )
 
 func init() {
@@ -1128,17 +1130,22 @@ func TestParseManifestForJSONParams(t *testing.T) {
 
 func TestComposePackage(t *testing.T) {
 
-	p, m, _ := testLoadParseManifest(t, "../tests/dat/manifest_data_compose_packages.yaml")
+	file := "../tests/dat/manifest_data_compose_packages.yaml"
+	p, m, _ := testLoadParseManifest(t, file)
 
 	pkg, err := p.ComposeAllPackages(m, m.Filepath, whisk.KeyValue{})
-	if err == nil {
-		n := "helloworld"
-		assert.NotNil(t, pkg[n], "Failed to get the whole package")
-		assert.Equal(t, n, pkg[n].Name, "Failed to get package name")
-		assert.Equal(t, "default", pkg[n].Namespace, "Failed to get package namespace")
-	} else {
-		assert.Fail(t, "Failed to compose package")
-	}
+	assert.Nil(t, err, fmt.Sprintf(TEST_ERROR_COMPOSE_PACKAGE_FAILURE, file))
+
+	n := "helloworld"
+	assert.NotNil(t, pkg[n], "Failed to get the whole package")
+	assert.Equal(t, n, pkg[n].Name, "Failed to get package name")
+	assert.Equal(t, "default", pkg[n].Namespace, "Failed to get package namespace")
+
+	n = "mypublicpackage"
+	assert.True(t, *(pkg[n].Publish), "Failed to mark public package as shared.")
+
+	n = "default"
+	assert.False(t, *(pkg[n].Publish), "Default package should not be maked as public.")
 }
 
 func TestComposeSequences(t *testing.T) {
@@ -1281,34 +1288,36 @@ func TestComposeApiRecords(t *testing.T) {
 
 func TestComposeDependencies(t *testing.T) {
 
-	p, m, _ := testLoadParseManifest(t, "../tests/dat/manifest_data_compose_dependencies.yaml")
+	file := "../tests/dat/manifest_data_compose_dependencies.yaml"
+	p, m, _ := testLoadParseManifest(t, file)
 
 	depdList, err := p.ComposeDependenciesFromAllPackages(m, "/project_folder", m.Filepath)
+	assert.Nil(t, err, fmt.Sprintf(TEST_ERROR_COMPOSE_DEPENDENCY_FAILURE, file))
 
-	if err != nil {
-		assert.Fail(t, "Failed to compose rules")
-	}
-	assert.Equal(t, 2, len(depdList), "Failed to get rules")
-	for depdy_name, depdy := range depdList {
-		assert.Equal(t, "helloworld", depdy.Packagename, "Failed to set dependecy isbinding")
-		assert.Equal(t, "/project_folder/Packages", depdy.ProjectPath, "Failed to set dependecy isbinding")
-		d := strings.Split(depdy_name, ":")
+	assert.Equal(t, 3, len(depdList), "Failed to get rules")
+	for dependency_name, dependency := range depdList {
+		assert.Equal(t, "helloworld", dependency.Packagename, "Failed to set dependency isbinding")
+		assert.Equal(t, "/project_folder/Packages", dependency.ProjectPath, "Failed to set dependency isbinding")
+		d := strings.Split(dependency_name, ":")
 		assert.NotEqual(t, d[1], "", "Failed to get dependency name")
 		switch d[1] {
 		case "myhelloworld":
-			assert.Equal(t, "https://github.com/user/repo/folder", depdy.Location, "Failed to set dependecy location")
-			assert.Equal(t, false, depdy.IsBinding, "Failed to set dependecy isbinding")
-			assert.Equal(t, "https://github.com/user/repo", depdy.BaseRepo, "Failed to set dependecy base repo url")
-			assert.Equal(t, "/folder", depdy.SubFolder, "Failed to set dependecy sub folder")
+			assert.Equal(t, "https://github.com/user/repo/folder", dependency.Location, "Failed to set dependency location")
+			assert.Equal(t, false, dependency.IsBinding, "Failed to set dependency isbinding")
+			assert.Equal(t, "https://github.com/user/repo", dependency.BaseRepo, "Failed to set dependency base repo url")
+			assert.Equal(t, "/folder", dependency.SubFolder, "Failed to set dependency sub folder")
 		case "myCloudant":
-			assert.Equal(t, "/whisk.system/cloudant", depdy.Location, "Failed to set rule trigger")
-			assert.Equal(t, true, depdy.IsBinding, "Failed to set dependecy isbinding")
-			assert.Equal(t, 1, len(depdy.Parameters), "Failed to set dependecy parameter")
-			assert.Equal(t, 1, len(depdy.Annotations), "Failed to set dependecy annotation")
-			assert.Equal(t, "myAnnotation", depdy.Annotations[0].Key, "Failed to set dependecy parameter key")
-			assert.Equal(t, "Here it is", depdy.Annotations[0].Value, "Failed to set dependecy parameter value")
-			assert.Equal(t, "dbname", depdy.Parameters[0].Key, "Failed to set dependecy annotation key")
-			assert.Equal(t, "myGreatDB", depdy.Parameters[0].Value, "Failed to set dependecy annotation value")
+			assert.Equal(t, "/whisk.system/cloudant", dependency.Location, "Failed to set dependency location")
+			assert.Equal(t, true, dependency.IsBinding, "Failed to set dependency isbinding")
+			assert.Equal(t, 1, len(dependency.Parameters), "Failed to set dependency parameter")
+			assert.Equal(t, 1, len(dependency.Annotations), "Failed to set dependency annotation")
+			assert.Equal(t, "myAnnotation", dependency.Annotations[0].Key, "Failed to set dependency parameter key")
+			assert.Equal(t, "Here it is", dependency.Annotations[0].Value, "Failed to set dependency parameter value")
+			assert.Equal(t, "dbname", dependency.Parameters[0].Key, "Failed to set dependency annotation key")
+			assert.Equal(t, "myGreatDB", dependency.Parameters[0].Value, "Failed to set dependency annotation value")
+		case "myPublicPackage":
+			assert.Equal(t, "/namespaceA/public", dependency.Location, "Failed to set dependency location.")
+			assert.True(t, dependency.IsBinding, "Failed to set dependency binding.")
 		default:
 			assert.Fail(t, "Failed to get dependency name")
 		}
diff --git a/parsers/yamlparser.go b/parsers/yamlparser.go
index 265ca9b1..2267e065 100644
--- a/parsers/yamlparser.go
+++ b/parsers/yamlparser.go
@@ -126,8 +126,8 @@ type Sequence struct {
 }
 
 type Dependency struct {
-	Version     string                 `yaml: "version, omitempty"`
-	Location    string                 `yaml: "location, omitempty"`
+	Version     string                 `yaml:"version,omitempty"`
+	Location    string                 `yaml:"location,omitempty"`
 	Inputs      map[string]Parameter   `yaml:"inputs"`
 	Annotations map[string]interface{} `yaml:"annotations"`
 }
@@ -154,7 +154,7 @@ type Trigger struct {
 	// TODO() this is propoagated from package to trigger within that package
 	//Parameters  map[string]interface{} `yaml:parameters`
 	// TODO(): deprecated, please delete it
-	Source string `yaml:source`
+	Source string `yaml:"source"`
 }
 
 type Feed struct {
@@ -191,8 +191,9 @@ type Package struct {
 	//mapping to wsk.SentPackageNoPublish.Version
 	Version      string                `yaml:"version"` //mandatory
 	License      string                `yaml:"license"` //mandatory
+	Public       bool                  `yaml:"public,omitempty"`
 	Repositories []Repository          `yaml:"repositories,omitempty"`
-	Dependencies map[string]Dependency `yaml: dependencies`
+	Dependencies map[string]Dependency `yaml:"dependencies"`
 	//mapping to wsk.SentPackageNoPublish.Namespace
 	Namespace        string                 `yaml:"namespace"`
 	Credential       string                 `yaml:"credential"`
diff --git a/tests/dat/manifest_data_compose_dependencies.yaml b/tests/dat/manifest_data_compose_dependencies.yaml
index 3531e362..2b433494 100644
--- a/tests/dat/manifest_data_compose_dependencies.yaml
+++ b/tests/dat/manifest_data_compose_dependencies.yaml
@@ -25,3 +25,5 @@ packages:
           dbname: myGreatDB
         annotations:
           myAnnotation: Here it is
+      myPublicPackage:
+        location: /namespaceA/public
diff --git a/tests/dat/manifest_data_compose_packages.yaml b/tests/dat/manifest_data_compose_packages.yaml
index 6663c4a3..2e282180 100644
--- a/tests/dat/manifest_data_compose_packages.yaml
+++ b/tests/dat/manifest_data_compose_packages.yaml
@@ -17,3 +17,7 @@
 packages:
   helloworld:
     namespace: default
+  mypublicpackage:
+    public: true
+  default:
+    public: true
\ No newline at end of file
diff --git a/utils/dependencies.go b/utils/dependencies.go
index f8921012..9f1dd081 100644
--- a/utils/dependencies.go
+++ b/utils/dependencies.go
@@ -23,6 +23,11 @@ import (
 	"github.com/apache/incubator-openwhisk-client-go/whisk"
 )
 
+const (
+	GITHUB       = "github"
+	WHISK_SYSTEM = "whisk.system"
+)
+
 type DependencyRecord struct {
 	ProjectPath string //root of the source codes of dependent projects, e.g. src_project_path/Packages
 	Packagename string //name of the package
@@ -65,7 +70,7 @@ func NewDependencyRecord(projectPath string,
 }
 
 func LocationIsBinding(location string) bool {
-	if strings.HasPrefix(location, "/whisk.system") || strings.HasPrefix(location, "whisk.system") {
+	if strings.HasPrefix(location, "/"+WHISK_SYSTEM) || strings.HasPrefix(location, "/") {
 		return true
 	}
 
@@ -81,5 +86,5 @@ func removeProtocol(location string) string {
 
 func LocationIsGithub(location string) bool {
 	paths := strings.SplitN(removeProtocol(location), "/", 2)
-	return strings.Contains(paths[0], "github")
+	return strings.Contains(paths[0], GITHUB)
 }
diff --git a/utils/dependencies_test.go b/utils/dependencies_test.go
index 6041deb7..7ed5c24a 100644
--- a/utils/dependencies_test.go
+++ b/utils/dependencies_test.go
@@ -57,3 +57,18 @@ func TestLocationIsGithub_NonGithub(t *testing.T) {
 	assert.False(t, LocationIsGithub("git.com"), "Allows non-github")
 	assert.False(t, LocationIsGithub(""), "Allows empty location")
 }
+
+func TestLocationIsBinding(t *testing.T) {
+	assert.True(t, LocationIsBinding("/whisk.system"), "Does not allow package binding to /whisk.system")
+	assert.True(t, LocationIsBinding("/whisk.system/cloudant"), "Does not allow package binding to /whisk.system/cloudant")
+	assert.True(t, LocationIsBinding("/namespace"), "Does not allow package binding to /namespace")
+	assert.True(t, LocationIsBinding("/namespace/package"), "Does not allow package binding to /namespace/package")
+
+}
+func TestLocationIsBinding_InvalidNamespace(t *testing.T) {
+	assert.False(t, LocationIsBinding("whisk.system"), "Allows package binding to whisk.system")
+	assert.False(t, LocationIsBinding("whisk.system/cloudant"), "Allows package binding to whisk.system/cloudant")
+	assert.False(t, LocationIsBinding(""), "Allows empty namespace")
+	assert.False(t, LocationIsBinding("namespace/package"), "Allows namespace/package")
+	assert.False(t, LocationIsBinding("namespace"), "Allows just namespace")
+}
diff --git a/wski18n/i18n_ids.go b/wski18n/i18n_ids.go
index ac088254..9d9e7c7b 100644
--- a/wski18n/i18n_ids.go
+++ b/wski18n/i18n_ids.go
@@ -71,6 +71,7 @@ const (
 	KEY_VALUE_MAX       = "max" // TODO() attempt to use this for Limit value range errors
 	KEY_API             = "api"
 	KEY_URL             = "url"
+	KEY_PACKAGE         = "package"
 )
 
 // DO NOT TRANSLATE
@@ -202,6 +203,7 @@ const (
 	ID_WARN_PACKAGES_NOT_FOUND_X_path_X                       = "msg_warn_packages_not_found"
 	ID_WARN_DEPLOYMENT_NAME_NOT_FOUND_X_key_X_name_X          = "msg_warn_deployment_name_not_found"
 	ID_WARN_PROJECT_NAME_OVERRIDDEN                           = "msg_warn_project_name_overridden"
+	ID_WARN_PACKAGE_IS_PUBLIC_X_package_X                     = "msg_warn_package_is_public"
 
 	// Verbose (Debug/Trace) messages
 	ID_DEBUG_PROJECT_SEARCH_X_path_X_key_X                = "msg_dbg_searching_project_directory"
diff --git a/wski18n/i18n_resources.go b/wski18n/i18n_resources.go
index f8a38356..5652ab18 100644
--- a/wski18n/i18n_resources.go
+++ b/wski18n/i18n_resources.go
@@ -92,12 +92,12 @@ func wski18nResourcesDe_deAllJson() (*asset, error) {
 		return nil, err
 	}
 
-	info := bindataFileInfo{name: "wski18n/resources/de_DE.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
+	info := bindataFileInfo{name: "wski18n/resources/de_DE.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)}
 	a := &asset{bytes: bytes, info: info}
 	return a, nil
 }
 
-var _wski18nResourcesEn_usAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x5b\x6f\x8f\xdb\x36\xd2\x7f\x9f\x4f\x31\x08\x1e\x20\x2d\xe0\x28\x69\x1f\x1c\x70\x08\xb0\x38\xe4\x2e\x69\xbb\xd7\x26\x1b\xec\x26\x17\x14\xe9\x42\xa1\xc5\xb1\xcd\x5a\x22\x05\x92\xb2\xe3\x1a\xfe\xee\x87\xe1\x1f\x49\xf6\x2e\x25\xad\xd3\xe2\xf2\xa6\x6e\x38\x9c\xf9\xcd\x90\xfc\x71\x66\xa8\x7c\x7a\x04\xb0\x7f\x04\x00\xf0\x58\xf0\xc7\x2f\xe0\x71\x65\x96\x79\xad\x71\x21\xbe\xe4\xa8\xb5\xd2\x8f\x67\x7e\xd4\x6a\x26\x4d\xc9\xac\x50\x92\xc4\x5e\xbb\xb1\x47\x00\x87\xd9\x80\x06\x21\x17\x2a\xa1\xe0\x92\x86\xc6\xe6\x9b\xa6\x28\xd0\x98\x84\x8a\x9b\x30\x3a\xa6\x65\xcb\xb4\x14\x72\x99\xd0\xf2\x31\x8c\x26\xb5\x14\x15\xcf\x39\x9a\x22\x2f\x95\x5c\xe6\x1a\x6b\xa5\x6d\x42\xd7\xb5\x1b\x34\xa0\x24\x70\xac\x4b\xb5\x43\x0e\x28\xad\xb0\x02\x0d\x7c\x23\x32\xcc\x66\xf0\x8e\x15\x6b\xb6\x44\x33\x83\x97\x05\xcd\x33\x33\x78\xaf\xc5\x72\x89\xda\xcc\xe0\xba\x29\x69\x04\x6d\x91\x7d\x0b\xcc\xc0\x16\xcb\x92\xfe\xab\xb1\x40\x69\xdd\x8c\x8d\xb3\x66\x40\x48\xb0\x2b\x04\x53\x63\x21\x16\x02\x39\x48\x56\xa1\xa9\x59\x81\xd9\x64\x5f\x94\x4a\x79\xf2\x12\xac\x52\x25\x58\x15\x1c\x99\x41\x23\xfd\x2f\x60\x92\x83\xd9\xc9\x02\x54\x8d\x72\xbb\x12\x66\x0d\x75\xf0\x09\x1a\x23\xe4\x12\x18\x54\x4c\x8a\x05\x1a\xeb\x84\x55\x4d\x5a\x59\x19\x54\x55\xe4\xc9\x42\x94\xad\xf8\xaf\x2f\xdf\xfc\x32\x05\xb3\x59\x29\x6d\x87\x17\xe0\x9d\x56\x1b\xc1\xd1\x00\x03\xd3\x54\x15\xd3\x3b\xf0\xf2\xa0\x16\xb0\x5d\x31\xfb\xc4\xc0\x1c\xb1\xb7\x3c\x5f\x17\xc6\x00\x69\x34\x8e\x06\x2d\xc5\x72\x85\x65\x1d\x4c\xc3\x4e\x35\x7a\x52\x08\x29\x54\xd3\xb1\x6c\x50\x1b\xb2\x9d\x8a\x8f\x90\xd6\x39\x1c\xe4\x40\x36\xd5\x1c\xb5\x0b\x8f\x59\x7b\x68\xc3\xb6\x16\x25\x5b\xe6\xac\x16\xf9\x4a\x99\x94\xd7\xde\xa5\x97\xef\x2e\xe1\xf3\x4f\x57\x37\xef\x3f\x4f\xd4\x38\x8c\xbd\xa7\xf4\x3f\xaf\xaf\x6f\x2e\xaf\xde\x4e\xd2\xdb\xd8\x55\xbe\xc6\x5d\x42\x29\x0d\x2b\x2d\xfe\x70\x7f\x01\x9f\x7f\x7e\xfd\xeb\x14\xa5\x05\x6a\x9b\xd3\xba\x24\xb4\xd6\xcc\xae\x28\xa4\x14\xe8\x8c\x84\xdd\x22\x4e\x51\xac\xe4\x42\xa4\x98\xca\x0f\x3a\x55\xf0\x0d\xc7\x05\x6b\x4a\x0b\xc2\xc0\xff\xfd\x74\xf5\xe6\xf5\xb3\x6c\x6b\xd6\xb5\x56\xb5\xf9\x76\x4a\x54\xca\x52\x6d\xf3\xa0\x23\xc5\xaf\x4e\x08\x5a\xa1\x71\xad\xdd\xf9\x1e\x8a\x4b\xcb\x29\x2d\x11\x4c\x50\x2d\xa4\x45\xcd\x88\xfe\x52\x31\xf7\x68\x7b\x72\x50\x6b\x55\xd5\x93\x80\xaf\x71\x37\x79\x39\xd7\xb8\x9b\x0a\xda\x47\xb9\x62\x92\x2d\x91\x0f\xc2\xae\xb5\xfa\x1d\x0b\xdb\x5d\x16\x56\xc1\x1c\xa1\x62\x7a\x8d\x1c\xa2\x86\x71\x8b\x41\x4f\x4e\x24\x96\x72\x26\x98\x72\x22\xe3\x1a\x23\x0d\x8d\xac\xe8\x11\x5b\x4d\x50\xdb\xb2\x6c\x42\x6f\x37\x3e\xd9\xe9\x11\x84\x06\xf5\x06\x75\x89\xc6\xc4\x68\x4f\x50\x6d\xac\x16\x49\xcd\x7e\xe9\x1a\x83\x9a\x0e\x89\x90\xc8\x41\x37\xd2\x8a\xaa\x65\xd7\x09\x16\xac\x4e\x07\xc1\x8d\x81\x6a\x6c\xdd\x4c\x01\xeb\xb7\xdb\x06\xf5\x5c\x99\x94\xca\x30\x3a\xae\xd4\x71\x4d\x5e\x09\x43\xd7\x91\x63\xd1\x34\x89\xbe\x5f\x21\x90\x04\xed\xde\xc2\x33\x29\x9d\x12\x61\x40\x2a\x0b\x5e\x55\xa3\x91\x67\xbf\x0d\x45\xe4\xc4\x62\x2d\x06\x2e\x18\xb2\x48\x37\x01\x89\x7c\x9d\x9d\xb1\x8d\x48\x96\x5a\x99\xf3\x4c\x05\x57\x86\xb2\xe1\x53\x7f\x3e\xed\xf7\x19\xfd\x3e\x1c\x6e\x67\xb0\xd0\xaa\x82\xfd\x3e\x33\xaa\xd1\x05\x1e\x0e\x93\x6c\xfa\x05\x1b\xb3\x49\x62\x71\xad\x0c\xda\xf3\x6c\xb5\xe1\x19\xb3\x76\x14\x47\x72\xb1\xfd\x8b\xf3\xfd\xac\xc5\x72\x9b\x33\x57\x08\xe4\x56\xad\x51\x8e\xba\x4c\x33\xc0\xcf\x00\x37\xe3\x3c\xe7\x1b\x59\x31\x6d\x56\xac\xcc\x4b\x55\xb0\x32\x61\xf1\x43\x94\x82\xab\x1a\xe5\x47\x97\xc2\x04\x92\x30\xde\x9e\x9b\x0d\x1b\x56\x36\x68\x26\x1a\x94\x68\xb7\x4a\xaf\xcf\x36\xe9\x2e\x49\x89\x16\x98\x25\x77\x1b\x5d\x8e\xf8\xda\xdd\xd7\x79\xc1\x64\x81\x65\x99\xbc\xcf\xae\x7e\xce\xe0\x5f\x5e\x86\xf2\xd8\x6e\xe6\x54\x03\x0b\x26\xd2\xda\x5f\x75\x89\x03\x17\x3c\x9c\xc5\xaa\x2e\xd1\x22\x98\x86\x96\x74\xd1\x94\xe5\x2e\x83\xeb\x46\xc2\xe7\x36\xa3\x6d\x8b\x97\xcf\x74\x13\x68\xac\x14\xa5\x07\x4c\x5b\xc1\xca\x72\xd7\x15\x03\xcc\x18\xb4\xc3\xab\xd0\x43\xea\x2b\x8b\xdc\x58\x66\x9b\x54\x0e\xf5\xf4\xe9\xd3\xa7\x17\x17\x17\x17\xbd\xb5\xe8\xf9\x70\xe3\xa6\x02\x09\x90\xe0\x24\xab\xae\x26\x46\x3e\x25\x44\x31\x34\x1c\x42\x21\xed\x83\x33\xbc\xc9\xce\x5f\xeb\xfe\xdc\xe9\x46\x06\xd7\xfb\x43\x4f\x72\x78\xc5\x27\xdb\x1b\x8b\xdf\x91\xc9\x33\x22\x58\xa8\xaa\x62\x92\xe7\xae\x8e\x73\x59\x25\xb1\x5c\xce\x6c\x4e\x99\x48\xc2\xe8\x7e\x9f\x15\x15\x3f\x1c\x42\xf5\xb7\xdf\x67\x34\xd1\xee\x6a\x3c\x1c\x1c\x53\xd2\xdc\xc3\xe1\x36\xcb\x06\x6d\xbb\xf4\x71\x97\xc7\xfd\x3c\xd2\x3f\xd9\xef\x29\x99\x0d\x06\x08\xe4\xe1\x70\x0b\x2b\x16\x2a\xe4\xbe\xc3\xed\x09\x99\x6e\x3d\xdd\x70\x79\x15\xc7\xe1\x5e\x00\x59\x36\x50\xec\x06\x13\x71\x41\xff\x4c\x17\x3b\x9d\x53\x9c\x8c\xd2\x69\x37\x3f\x74\x12\xf7\x3a\x3a\xe8\x27\xc7\x1a\x25\x47\x59\x3c\x24\x9c\xdd\xa4\xf3\xed\x74\x47\x24\x19\xd3\x57\xf7\x9a\xf9\x9a\x8d\x73\x3f\x0a\x22\x86\x46\xa7\xf2\xb2\x1e\xcd\xa9\x45\xc2\xf5\xff\xe1\x1d\x11\xfd\x79\xd8\x3e\xf9\xba\x15\xbc\x4b\x73\x7f\xce\x1a\x4e\x3c\x19\x29\x24\xc3\xeb\x78\x44\xb7\x67\xae\xe4\x10\xaa\x50\x3b\x9f\x7b\xe7\x38\x44\xfe\x06\x68\x6b\xf3\x21\x2c\xc0\x1b\x4d\x2b\x19\xcc\xf6\xf3\x9f\xbf\x6e\xbf\x45\x1f\x17\xaa\x91\x3c\x0f\x78\x03\x53\x25\x37\x40\x89\x36\xc9\xc1\xdb\x95\x28\x56\xb0\x75\x8d\x67\xc2\xc5\x7d\xde\x68\x57\x08\x45\xa3\x35\x05\x26\x3a\x18\xdb\x09\xee\x92\xf2\xbf\x49\x03\x33\xce\x17\x8a\xdf\xe4\xb4\xc0\xf7\x6b\x46\x2a\xbf\xdf\xe4\xbb\x12\x99\x71\xdd\x9d\x8d\xe0\xe8\x40\x91\x3c\x61\x87\x85\xd2\x5d\xa6\xf5\x02\xc6\x6d\x0d\xd6\xb5\x77\x6c\x31\x79\x5a\xe7\xba\x02\x62\x82\xa1\xd0\x59\x4d\x2c\x86\x82\x9d\x6a\x40\xa3\x5b\xf9\x2d\x93\xb6\x6b\x92\x81\x5d\x09\xf3\x0f\xf8\x66\xf7\xec\xed\xb7\x13\xec\x8c\x95\xb3\x77\x5d\xea\x55\x65\x9f\x62\x53\xd1\x55\x23\x54\x16\x2d\x1b\x34\xf6\x76\x82\xdd\xb8\xc8\x0f\xf2\xb0\x7d\x52\x98\xe8\x63\x80\x97\x87\x5e\x79\xaa\xc7\xed\x47\x9d\x5f\xd0\x6b\x93\x6a\x74\x2d\x20\x3e\x03\x56\xf6\x6b\xa3\xf6\x5c\x13\x1c\xdd\xce\x08\x46\x80\x69\x6c\x0f\xe3\xb3\x8e\x0a\x81\x0b\x8d\x85\x0d\xf4\xa8\x7d\x3b\x7f\xec\xed\xe0\xf5\xf5\xf5\xd5\xf5\x4d\x02\xf7\xc5\xe9\x1f\xf0\xe2\x70\x67\xe0\xe2\x62\x20\x3f\xd1\xfa\x98\x89\xd7\x52\x6d\x65\x4e\xa9\xe4\xf8\x5d\x40\x52\x14\xaa\x30\x2b\x83\xee\x51\x00\x94\x2c\x77\x60\x9a\xda\xbf\x70\x3d\x73\xdd\xf8\xcc\xec\x8c\xc5\x0a\xe6\x42\x72\x21\x97\x06\x94\x86\xa5\xb0\xab\x66\x9e\x15\xaa\x6a\xdf\x34\x86\x13\x2a\xad\x63\x52\x55\x68\x64\x36\x05\xd3\xbd\x38\x82\x13\x39\xe2\xad\xad\xb0\x2b\x70\x4f\x95\x50\xa1\x31\x6c\x89\x2f\x68\x10\xb5\x3e\x1c\xdc\xf3\x93\x1f\x2b\x14\xf7\x03\xf4\x63\xa4\xdc\xed\x41\xf2\x64\x3a\x08\x89\xdf\xa1\xd2\xbf\x08\xd2\x02\x91\xe7\x42\x6e\xd4\x3a\x05\xe8\x07\x77\xaf\xd1\xd1\xf2\x62\x8e\x1c\x69\x1a\x6c\x57\xee\xd1\x2b\x20\xb5\xfe\xc1\x31\x0c\xfd\x35\x68\xd7\xb8\x6b\x9b\x6c\x54\x10\x31\xab\xf4\x50\x03\xb1\x95\x71\xfd\xa8\x4f\x31\x98\xb7\xb4\x1f\x83\x9e\x51\x9b\xb1\x0b\x9d\x4b\x65\xfd\x6d\x98\x30\xf8\xa6\xdf\xae\x76\x97\xb9\x93\x06\x46\xe7\xde\xae\x8e\x4a\xae\x31\xa3\xae\xbc\xab\x84\xa9\x98\x2d\x52\xf5\x1d\x39\xd8\x6e\x0f\x9a\xc0\x9d\x09\x1e\x2f\x5c\x21\x4f\xdf\x44\xfc\x78\xc0\x00\x5c\xa1\xef\x3c\x3a\x23\x6e\x59\x1d\xbd\x91\x50\xd5\x53\x72\xd4\x86\xf7\xa3\xd1\x8d\x61\x27\x42\x83\x88\xb6\x17\x2b\x45\x2a\x6c\x97\x7e\x94\x8e\x79\x58\x92\xb6\xe3\x4d\xb6\xc2\x6f\xc2\xd2\xbd\xa7\x1e\xa1\x52\xda\x61\x67\xee\xe5\xdb\xcd\xf1\x3f\xa7\xc4\x39\x42\x1c\x09\xf5\xf5\x43\x00\x9d\xc4\xd5\x1d\x05\x8f\xe8\x89\x01\xdf\x06\xf4\xa1\xc4\x2f\x16\xa5\x89\xa0\xf1\x8b\x4b\x72\xc8\x9d\xaf\x71\xc5\xe4\x4b\x4c\xe5\x39\xdd\x51\x5e\xa2\x7f\xb1\x0d\xdc\xdb\xbd\x32\x84\x6e\x5e\x77\x93\xd1\xfd\x26\x8a\xde\xf1\x9d\x1c\x53\x0f\x3d\xf7\x1e\xbb\xd3\xd3\x5a\x4b\xe0\x3b\x72\xd8\x15\x0e\x14\xc6\x2e\xca\x4c\xee\xda\xbd\x41\x24\xd2\x5b\xf6\xd1\xb8\x86\x2e\x7b\x0b\x61\xd4\x8d\x46\x97\x0f\xdf\xb9\xbe\xf3\x19\x7a\x2c\x1f\xae\x7f\x71\x08\x5c\x2f\xd4\x1d\xa5\x4f\x47\x4d\x98\x5b\xff\x0c\x3f\x05\x48\xc5\xca\x85\xd2\x55\x32\x72\x6f\xe2\xf8\x10\x82\x0c\xde\xeb\x1d\xb0\x25\x13\x72\xac\xe7\xa3\x75\xfe\xbb\x51\xb2\x25\xdb\xa2\xe2\x03\x0f\xde\xff\xbe\xb9\x7a\x0b\x42\xd6\x8d\x05\xce\x2c\x83\x37\x21\x1a\x4f\x8a\x8a\x3f\x21\xea\x1d\xb6\xc4\x6a\xd1\x1a\xda\xe2\x3c\x6c\x9c\xd4\xc7\x0f\xf7\x9c\x8d\xb8\xb8\x0c\xb6\x38\x0f\x3b\x62\xe6\xde\x3e\x9c\x58\x2d\x48\xa6\x60\xd2\xe7\x1b\x73\xf4\x37\x3e\xf2\xd0\x19\xeb\x26\x65\x10\x32\xd9\xa6\xe6\xcc\xe2\x09\xf5\x59\x05\x85\x92\x1b\xd4\xf6\xc4\xbc\x55\x7d\x1d\x63\x81\xed\xbb\x7b\x96\xab\x71\xb3\xb9\x93\x7a\x04\x71\x92\xd3\x73\x66\x90\x83\x92\xfd\xe3\x73\x57\xd5\x68\x28\x84\x2c\xca\x86\xe3\x09\x3c\x66\x8e\x56\x61\x3c\x18\x9e\x24\x86\x0f\x5a\x2a\x10\x61\x56\x06\x97\xd6\xb7\x19\x94\x5d\xb9\x9c\xc2\xb1\xc3\xa2\x91\x81\x1b\x22\x81\xcc\x7c\x2c\x94\xc4\xf0\xf2\x5e\x91\x16\xfc\x52\x63\x31\x85\x11\x02\xd6\xb8\x76\x91\xe7\x88\xe0\x73\xb2\xfa\x95\xe8\x1d\xf0\x8e\xec\x48\xad\x6a\x6c\x9f\xf4\x32\xf8\xd8\x5d\x26\x91\xf2\x68\xda\xac\xa5\x45\xda\x1e\x31\xe9\x19\xb9\x9e\x83\x3b\x31\x4c\x39\x95\xe5\x16\x73\x2e\xf4\x24\xb2\xbe\xd7\x2d\xf2\xa3\x8d\x7b\xad\x84\xf4\xa9\xa1\xef\x45\x58\x0c\x05\x0e\x25\x64\x1d\x2d\xcd\xc0\x34\x45\xf4\xca\xb8\xda\xe8\x98\xa9\xef\x77\xe3\xe3\xcb\xeb\xb7\x97\x6f\x7f\x9c\x5e\xf9\xc4\x09\x0f\xab\x7d\xb6\x4c\xcb\xb6\xff\xae\xd1\x26\xf3\xcd\x6b\x1a\x23\x6f\x3f\xc5\xc6\xfb\x2d\xb0\x85\x45\xed\x73\xdd\x17\xfe\x32\xa2\x1b\xf4\x76\x68\xa3\x05\x7b\xee\x21\xf2\xc1\xd7\x4f\xff\x6b\x9e\x5e\xba\x09\x1c\xed\xf8\x16\x77\x96\x29\xc3\xe6\x58\x6b\x2c\x88\x2b\x72\x8d\x75\xc9\x8a\xe4\x1e\xa0\x14\x94\xec\xa8\x92\x87\xc4\xda\xbd\xfb\x7a\x6a\x39\x7e\x70\xd8\x8a\xb2\x04\xa3\x94\x24\x2a\xea\x2c\xcc\xa0\x0e\x34\x63\x7c\x65\xe1\x5a\x46\xb8\x3d\x52\x67\x2c\xb2\x89\xd8\x43\x24\xce\xa9\x09\xcc\x4a\x35\x25\x27\x78\x06\x6d\x06\x1f\x8c\xef\x9e\xf6\xbb\x17\x24\xed\x7e\x8d\x3f\x9b\xb4\x88\x9c\xfc\xc8\x52\x12\x2e\x6f\x81\xd2\xbf\xbb\xb5\x0a\x9d\x07\x4f\x16\x0f\x30\xe9\x0e\x31\xdb\x0c\x2e\xde\x98\x51\x37\x3f\x2e\x68\x6c\xd3\xc5\xcf\xfc\xfa\xdf\xf7\x8d\x03\x2b\x45\x25\x6c\x2e\x96\x52\xe9\x24\xa4\xb8\xa5\x03\xc3\xb9\x29\x0e\x95\xfb\x75\x5a\x8f\x10\x87\x7a\x75\x53\xad\x17\x2b\x26\x97\xc8\xe6\xc9\xaf\xb2\x7e\x69\x2d\xb6\x05\x90\x89\x7e\x97\x3b\xdf\xa1\x6d\x75\x64\x70\x49\xe6\xa9\x88\x9c\xb0\x17\x1c\x02\x93\x97\x6a\x99\x1b\xf1\x47\x0a\x40\xa9\x96\x37\xe2\x0f\x77\x3f\xf9\x09\x47\x1e\x77\x5b\x94\x49\xf7\xe2\x4e\x05\xf7\x1c\xed\x16\x51\xc2\x73\x77\xeb\x7d\xf7\x7c\x32\x94\x0a\x2b\xa5\x77\x43\x68\xbc\xc4\xb9\x80\xbe\xfb\xfe\xef\x0e\xd2\xdf\xbe\xfb\x7e\x32\x26\xba\xc4\x54\x93\x2a\x60\xc2\xe8\x59\x60\x9e\xfb\xf8\xfc\xff\x73\xfa\x33\x8e\xc7\xf5\xa2\xf2\x5a\xab\x1a\xb5\x15\x98\x7a\xf4\x88\x0c\xd8\xe3\x2b\xdf\xe2\xb6\x5a\x60\xdb\xe4\xf6\x8d\xad\x4e\x59\x6c\x86\xdf\xcf\x89\x91\x12\xb9\x72\x1b\x8e\x98\x51\x58\x50\x8d\x35\x82\xbb\x85\x78\xaf\xd9\x46\x18\x98\x37\xa2\xe4\xc3\x8d\x30\xe7\x8a\xa7\x03\x4d\xdb\x76\x12\x15\xb4\xbb\xff\x88\x10\xe4\x09\xa1\x87\x68\xbb\xf6\xde\x7e\x9f\x85\xbf\x8d\xe1\xde\xef\xb3\x4a\xc8\xd0\xec\xa1\xff\x61\xc5\x48\xe9\xe8\xa0\xc6\x9c\xca\x1f\xb2\x14\x4d\xc4\x72\x3c\x48\x51\x7e\x71\x52\x99\xdf\x93\xe3\x26\x8b\xef\xb3\x2a\x6e\x87\x36\xf4\xf3\x5c\xb3\x06\xbf\x08\x93\xfc\xea\xf5\x4e\xab\xe6\x88\x62\x58\xa9\x91\xf1\x1d\x78\x15\x6d\xe2\x6d\xb0\xc4\x82\xf2\x3f\x65\x57\xe8\xfb\xc0\xe3\x90\x62\x7b\x74\xb4\x5b\x15\xae\xc2\x93\xce\x4e\x4c\x18\x0a\x25\x2d\x73\x5f\x1f\x4a\x35\xad\xe5\xea\xac\xf7\x9e\xc3\x5c\x50\xa6\x80\xb8\xf7\xb1\x28\xdc\x38\xa7\xfd\xab\x6d\x68\x09\xf8\xc6\x5a\x10\x3a\x2e\x5b\xc6\x23\xd4\xfb\x9c\x35\x57\x1b\xd4\x5a\x70\x8e\xa9\x1a\x8c\x10\xf6\xbf\x6e\xed\x9e\x33\xbb\xa9\x31\x57\xe8\xbf\x56\xa5\x60\xbc\x7a\xfd\xcf\x0f\x3f\x4e\x4e\x59\x9d\xf4\xc3\xf2\x55\x3e\x5f\xe6\x06\x99\x2e\x56\x54\xa3\x44\x67\xdb\xbc\x3b\xf5\xcf\x5e\xe2\x8c\xd6\xd9\xe3\x4c\x3d\xee\x0b\x3a\x2b\x1d\x29\x8c\x5c\x7b\x04\xe5\x74\x47\xfc\xd9\xbb\xe1\xcc\x9d\x40\xd0\xda\xa3\xe2\x9f\x38\x07\xfe\xc1\xc5\xab\x7b\xda\xa8\x21\x22\x2f\xe0\x07\x87\xa0\xfb\xa7\x16\xee\xe5\x86\x94\x3d\x14\xc0\xf0\x27\xc7\x0f\xc7\xd0\x7f\x45\x8d\xaf\xfe\x01\xd2\xa3\xdb\x47\xff\x0d\x00\x00\xff\xff\x2f\x60\x92\x0a\xa5\x35\x00\x00")
+var _wski18nResourcesEn_usAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x5b\x6f\x8f\xdb\x36\xd2\x7f\x9f\x4f\x31\x08\x1e\x20\x2d\xe0\x28\x69\x1f\x1c\x70\x08\xb0\x38\xe4\x2e\x69\xbb\xd7\x26\x1b\xec\x26\x17\x14\xe9\x42\xa1\xc5\xb1\xcd\x5a\x22\x05\x92\xb2\xe3\x1a\xfe\xee\x87\xe1\x1f\x49\xf6\x2e\x25\xad\xd3\xe2\xf2\xa6\x6e\x38\x9c\xf9\xcd\x90\xfc\x71\x66\xa8\x7c\x7a\x04\xb0\x7f\x04\x00\xf0\x58\xf0\xc7\x2f\xe0\x71\x65\x96\x79\xad\x71\x21\xbe\xe4\xa8\xb5\xd2\x8f\x67\x7e\xd4\x6a\x26\x4d\xc9\xac\x50\x92\xc4\x5e\xbb\xb1\x47\x00\x87\xd9\x80\x06\x21\x17\x2a\xa1\xe0\x92\x86\xc6\xe6\x9b\xa6\x28\xd0\x98\x84\x8a\x9b\x30\x3a\xa6\x65\xcb\xb4\x14\x72\x99\xd0\xf2\x31\x8c\x26\xb5\x14\x15\xcf\x39\x9a\x22\x2f\x95\x5c\xe6\x1a\x6b\xa5\x6d\x42\xd7\xb5\x1b\x34\xa0\x24\x70\xac\x4b\xb5\x43\x0e\x28\xad\xb0\x02\x0d\x7c\x23\x32\xcc\x66\xf0\x8e\x15\x6b\xb6\x44\x33\x83\x97\x05\xcd\x33\x33\x78\xaf\xc5\x72\x89\xda\xcc\xe0\xba\x29\x69\x04\x6d\x91\x7d\x0b\xcc\xc0\x16\xcb\x92\xfe\xab\xb1\x40\x69\xdd\x8c\x8d\xb3\x66\x40\x48\xb0\x2b\x04\x53\x63\x21\x16\x02\x39\x48\x56\xa1\xa9\x59\x81\xd9\x64\x5f\x94\x4a\x79\xf2\x12\xac\x52\x25\x58\x15\x1c\x99\x41\x23\xfd\x2f\x60\x92\x83\xd9\xc9\x02\x54\x8d\x72\xbb\x12\x66\x0d\x75\xf0\x09\x1a\x23\xe4\x12\x18\x54\x4c\x8a\x05\x1a\xeb\x84\x55\x4d\x5a\x59\x19\x54\x55\xe4\xc9\x42\x94\xad\xf8\xaf\x2f\xdf\xfc\x32\x05\xb3\x59\x29\x6d\x87\x17\xe0\x9d\x56\x1b\xc1\xd1\x00\x03\xd3\x54\x15\xd3\x3b\xf0\xf2\xa0\x16\xb0\x5d\x31\xfb\xc4\xc0\x1c\xb1\xb7\x3c\x5f\x17\xc6\x00\x69\x34\x8e\x06\x2d\xc5\x72\x85\x65\x1d\x4c\xc3\x4e\x35\x7a\x52\x08\x29\x54\xd3\xb1\x6c\x50\x1b\xb2\x9d\x8a\x8f\x90\xd6\x39\x1c\xe4\x40\x36\xd5\x1c\xb5\x0b\x8f\x59\x7b\x68\xc3\xb6\x16\x25\x5b\xe6\xac\x16\xf9\x4a\x99\x94\xd7\xde\xa5\x97\xef\x2e\xe1\xf3\x4f\x57\x37\xef\x3f\x4f\xd4\x38\x8c\xbd\xa7\xf4\x3f\xaf\xaf\x6f\x2e\xaf\xde\x4e\xd2\xdb\xd8\x55\xbe\xc6\x5d\x42\x29\x0d\x2b\x2d\xfe\x70\x7f\x01\x9f\x7f\x7e\xfd\xeb\x14\xa5\x05\x6a\x9b\xd3\xba\x24\xb4\xd6\xcc\xae\x28\xa4\x14\xe8\x8c\x84\xdd\x22\x4e\x51\xac\xe4\x42\xa4\x98\xca\x0f\x3a\x55\xf0\x0d\xc7\x05\x6b\x4a\x0b\xc2\xc0\xff\xfd\x74\xf5\xe6\xf5\xb3\x6c\x6b\xd6\xb5\x56\xb5\xf9\x76\x4a\x54\xca\x52\x6d\xf3\xa0\x23\xc5\xaf\x4e\x08\x5a\xa1\x71\xad\xdd\xf9\x1e\x8a\x4b\xcb\x29\x2d\x11\x4c\x50\x2d\xa4\x45\xcd\x88\xfe\x52\x31\xf7\x68\x7b\x72\x50\x6b\x55\xd5\x93\x80\xaf\x71\x37\x79\x39\xd7\xb8\x9b\x0a\xda\x47\xb9\x62\x92\x2d\x91\x0f\xc2\xae\xb5\xfa\x1d\x0b\xdb\x5d\x16\x56\xc1\x1c\xa1\x62\x7a\x8d\x1c\xa2\x86\x71\x8b\x41\x4f\x4e\x24\x96\x72\x26\x98\x72\x22\xe3\x1a\x23\x0d\x8d\xac\xe8\x11\x5b\x4d\x50\xdb\xb2\x6c\x42\x6f\x37\x3e\xd9\xe9\x11\x84\x06\xf5\x06\x75\x89\xc6\xc4\x68\x4f\x50\x6d\xac\x16\x49\xcd\x7e\xe9\x1a\x83\x9a\x0e\x89\x90\xc8\x41\x37\xd2\x8a\xaa\x65\xd7\x09\x16\xac\x4e\x07\xc1\x8d\x81\x6a\x6c\xdd\x4c\x01\xeb\xb7\xdb\x06\xf5\x5c\x99\x94\xca\x30\x3a\xae\xd4\x71\x4d\x5e\x09\x43\xd7\x91\x63\xd1\x34\x89\xbe\x5f\x21\x90\x04\xed\xde\xc2\x33\x29\x9d\x12\x61\x40\x2a\x0b\x5e\x55\xa3\x91\x67\xbf\x0d\x45\xe4\xc4\x62\x2d\x06\x2e\x18\xb2\x48\x37\x01\x89\x7c\x9d\x9d\xb1\x8d\x48\x96\x5a\x99\xf3\x4c\x05\x57\x86\xb2\xe1\x53\x7f\x3e\xed\xf7\x19\xfd\x3e\x1c\x6e\x67\xb0\xd0\xaa\x82\xfd\x3e\x33\xaa\xd1\x05\x1e\x0e\x93\x6c\xfa\x05\x1b\xb3\x49\x62\x71\xad\x0c\xda\xf3\x6c\xb5\xe1\x19\xb3\x76\x14\x47\x72\xb1\xfd\x8b\xf3\xfd\xac\xc5\x72\x9b\x33\x57\x08\xe4\x56\xad\x51\x8e\xba\x4c\x33\xc0\xcf\x00\x37\xe3\x3c\xe7\x1b\x59\x31\x6d\x56\xac\xcc\x4b\x55\xb0\x32\x61\xf1\x43\x94\x82\xab\x1a\xe5\x47\x97\xc2\x04\x92\x30\xde\x9e\x9b\x0d\x1b\x56\x36\x68\x26\x1a\x94\x68\xb7\x4a\xaf\xcf\x36\xe9\x2e\x49\x89\x16\x98\x25\x77\x1b\x5d\x8e\xf8\xda\xdd\xd7\x79\xc1\x64\x81\x65\x99\xbc\xcf\xae\x7e\xce\xe0\x5f\x5e\x86\xf2\xd8\x6e\xe6\x54\x03\x0b\x26\xd2\xda\x5f\x75\x89\x03\x17\x3c\x9c\xc5\xaa\x2e\xd1\x22\x98\x86\x96\x74\xd1\x94\xe5\x2e\x83\xeb\x46\xc2\xe7\x36\xa3\x6d\x8b\x97\xcf\x74\x13\x68\xac\x14\xa5\x07\x4c\x5b\xc1\xca\x72\xd7\x15\x03\xcc\x18\xb4\xc3\xab\xd0\x43\xea\x2b\x8b\xdc\x58\x66\x9b\x54\x0e\xf5\xf4\xe9\xd3\xa7\x17\x17\x17\x17\xbd\xb5\xe8\xf9\x70\xe3\xa6\x02\x09\x90\xe0\x24\xab\xae\x26\x46\x3e\x25\x44\x31\x34\x1c\x42\x21\xed\x83\x33\xbc\xc9\xce\x5f\xeb\xfe\xdc\xe9\x46\x06\xd7\xfb\x43\x4f\x72\x78\xc5\x27\xdb\x1b\x8b\xdf\x91\xc9\x33\x22\x58\xa8\xaa\x62\x92\xe7\xae\x8e\x73\x59\x25\xb1\x5c\xce\x6c\x4e\x99\x48\xc2\xe8\x7e\x9f\x15\x15\x3f\x1c\x42\xf5\xb7\xdf\x67\x34\xd1\xee\x6a\x3c\x1c\x1c\x53\xd2\xdc\xc3\xe1\x36\xcb\x06\x6d\xbb\xf4\x71\x97\xc7\xfd\x3c\xd2\x3f\xd9\xef\x29\x99\x0d\x06\x08\xe4\xe1\x70\x0b\x2b\x16\x2a\xe4\xbe\xc3\xed\x09\x99\x6e\x3d\xdd\x70\x79\x15\xc7\xe1\x5e\x00\x59\x36\x50\xec\x06\x13\x71\x41\xff\x4c\x17\x3b\x9d\x53\x9c\x8c\xd2\x69\x37\x3f\x74\x12\xf7\x3a\x3a\xe8\x27\xc7\x1a\x25\x47\x59\x3c\x24\x9c\xdd\xa4\xf3\xed\x74\x47\x24\x19\xd3\x57\xf7\x9a\xf9\x9a\x8d\x73\x3f\x0a\x22\x86\x46\xa7\xf2\xb2\x1e\xcd\xa9\x45\xc2\xf5\xff\xe1\x1d\x11\xfd\x79\xd8\x3e\xf9\xba\x15\xbc\x4b\x73\x7f\xce\x1a\x4e\x3c\x19\x29\x24\xc3\xeb\x78\x44\xb7\x67\xae\xe4\x10\xaa\x50\x3b\x9f\x7b\xe7\x38\x44\xfe\x06\x68\x6b\xf3\x21\x2c\xc0\x1b\x4d\x2b\x19\xcc\xf6\xf3\x9f\xbf\x6e\xbf\x45\x1f\x17\xaa\x91\x3c\x0f\x78\x03\x53\x25\x37\x40\x89\x36\xc9\xc1\xdb\x95\x28\x56\xb0\x75\x8d\x67\xc2\xc5\x7d\xde\x68\x57\x08\x45\xa3\x35\x05\x26\x3a\x18\xdb\x09\xee\x92\xf2\xbf\x49\x03\x33\xce\x17\x8a\xdf\xe4\xb4\xc0\xf7\x6b\x46\x2a\xbf\xdf\xe4\xbb\x12\x99\x71\xdd\x9d\x8d\xe0\xe8\x40\x91\x3c\x61\x87\x85\xd2\x5d\xa6\xf5\x02\xc6\x6d\x0d\xd6\xb5\x77\x6c\x31\x79\x5a\xe7\xba\x02\x62\x82\xa1\xd0\x59\x4d\x2c\x86\x82\x9d\x6a\x40\xa3\x5b\xf9\x2d\x93\xb6\x6b\x92\x81\x5d\x09\xf3\x0f\xf8\x66\xf7\xec\xed\xb7\x13\xec\x8c\x95\xb3\x77\x5d\xea\x55\x65\x9f\x62\x53\xd1\x55\x23\x54\x16\x2d\x1b\x34\xf6\x76\x82\xdd\xb8\xc8\x0f\xf2\xb0\x7d\x52\x98\xe8\x63\x80\x97\x87\x5e\x79\xaa\xc7\xed\x47\x9d\x5f\xd0\x6b\x93\x6a\x74\x2d\x20\x3e\x03\x56\xf6\x6b\xa3\xf6\x5c\x13\x1c\xdd\xce\x08\x46\x80\x69\x6c\x0f\xe3\xb3\x8e\x0a\x81\x0b\x8d\x85\x0d\xf4\xa8\x7d\x3b\x7f\xec\xed\xe0\xf5\xf5\xf5\xd5\xf5\x4d\x02\xf7\xc5\xe9\x1f\xf0\xe2\x70\x67\xe0\xe2\x62\x20\x3f\xd1\xfa\x98\x89\xd7\x52\x6d\x65\x4e\xa9\xe4\xf8\x5d\x40\x52\x14\xaa\x30\x2b\x83\xee\x51\x00\x94\x2c\x77\x60\x9a\xda\xbf\x70\x3d\x73\xdd\xf8\xcc\xec\x8c\xc5\x0a\xe6\x42\x72\x21\x97\x06\x94\x86\xa5\xb0\xab\x66\x9e\x15\xaa\x6a\xdf\x34\x86\x13\x2a\xad\x63\x52\x55\x68\x64\x36\x05\xd3\xbd\x38\x82\x13\x39\xe2\xad\xad\xb0\x2b\x70\x4f\x95\x50\xa1\x31\x6c\x89\x2f\x68\x10\xb5\x3e\x1c\xdc\xf3\x93\x1f\x2b\x14\xf7\x03\xf4\x63\xa4\xdc\xed\x41\xf2\x64\x3a\x08\x89\xdf\xa1\xd2\xbf\x08\xd2\x02\x91\xe7\x42\x6e\xd4\x3a\x05\xe8\x07\x77\xaf\xd1\xd1\xf2\x62\x8e\x1c\x69\x1a\x6c\x57\xee\xd1\x2b\x20\xb5\xfe\xc1\x31\x0c\xfd\x35\x68\xd7\xb8\x6b\x9b\x6c\x54\x10\x31\xab\xf4\x50\x03\xb1\x95\x71\xfd\xa8\x4f\x31\x98\xb7\xb4\x1f\x83\x9e\x51\x9b\xb1\x0b\x9d\x4b\x65\xfd\x6d\x98\x30\xf8\xa6\xdf\xae\x76\x97\xb9\x93\x06\x46\xe7\xde\xae\x8e\x4a\xae\x31\xa3\xae\xbc\xab\x84\xa9\x98\x2d\x52\xf5\x1d\x39\xd8\x6e\x0f\x9a\xc0\x9d\x09\x1e\x2f\x5c\x21\x4f\xdf\x44\xfc\x78\xc0\x00\x5c\xa1\xef\x3c\x3a\x23\x6e\x59\x1d\xbd\x91\x50\xd5\x53\x72\xd4\x86\xf7\xa3\xd1\x8d\x61\x27\x42\x83\x88\xb6\x17\x2b\x45\x2a\x6c\x97\x7e\x94\x8e\x79\x58\x92\xb6\xe3\x4d\xb6\xc2\x6f\xc2\xd2\xbd\xa7\x1e\xa1\x52\xda\x61\x67\xee\xe5\xdb\xcd\xf1\x3f\xa7\xc4\x39\x42\x1c\x09\xf5\xf5\x43\x00\x9d\xc4\xd5\x1d\x05\x8f\xe8\x89\x01\xdf\x06\xf4\xa1\xc4\x2f\x16\xa5\x89\xa0\xf1\x8b\x4b\x72\xc8\x9d\xaf\x71\xc5\xe4\x4b\x4c\xe5\x39\xdd\x51\x5e\xa2\x7f\xb1\x0d\xdc\xdb\xbd\x32\x84\x6e\x5e\x77\x93\xd1\xfd\x26\x8a\xde\xf1\x9d\x1c\x53\x0f\x3d\xf7\x1e\xbb\xd3\xd3\x5a\x4b\xe0\x3b\x72\xd8\x15\x0e\x14\xc6\x2e\xca\x4c\xee\xda\xbd\x41\x24\xd2\x5b\xf6\xd1\xb8\x86\x2e\x7b\x0b\x61\xd4\x8d\x46\x97\x0f\xdf\xb9\xbe\xf3\x19\x7a\x2c\x1f\xae\x7f\x71\x08\x5c\x2f\xd4\x1d\xa5\x4f\x47\x4d\x98\x5b\xff\x0c\x3f\x05\x48\xc5\xca\x85\xd2\x55\x32\x72\x6f\xe2\xf8\x10\x82\x0c\xde\xeb\x1d\xb0\x25\x13\x72\xac\xe7\xa3\x75\xfe\xbb\x51\xb2\x25\xdb\xa2\xe2\x03\x0f\xde\xff\xbe\xb9\x7a\x0b\x42\xd6\x8d\x05\xce\x2c\x83\x37\x21\x1a\x4f\x8a\x8a\x3f\x21\xea\x1d\xb6\xc4\x6a\xd1\x1a\xda\xe2\x3c\x6c\x9c\xd4\xc7\x0f\xf7\x9c\x8d\xb8\xb8\x0c\xb6\x38\x0f\x3b\x62\xe6\xde\x3e\x9c\x58\x2d\x48\xa6\x60\xd2\xe7\x1b\x73\xf4\x37\x3e\xf2\xd0\x19\xeb\x26\x65\x10\x32\xd9\xa6\xe6\xcc\xe2\x09\xf5\x59\x05\x85\x92\x1b\xd4\xf6\xc4\xbc\x55\x7d\x1d\x63\x81\xed\xbb\x7b\x96\xab\x71\xb3\xb9\x93\x7a\x04\x71\x92\xd3\x73\x66\x90\x83\x92\xfd\xe3\x73\x57\xd5\x68\x28\x84\x2c\xca\x86\xe3\x09\x3c\x66\x8e\x56\x61\x3c\x18\x9e\x24\x86\x0f\x5a\x2a\x10\x61\x56\x06\x97\xd6\xb7\x19\x94\x5d\xb9\x9c\xc2\xb1\xc3\xa2\x91\x81\x1b\x22\x81\xcc\x7c\x2c\x94\xc4\xf0\xf2\x5e\x91\x16\xfc\x52\x63\x31\x85\x11\x02\xd6\xb8\x76\x91\xe7\x88\xe0\x73\xb2\xfa\x95\xe8\x1d\xf0\x8e\xec\x48\xad\x6a\x6c\x9f\xf4\x32\xf8\xd8\x5d\x26\x91\xf2\x68\xda\xac\xa5\x45\xda\x1e\x31\xe9\x19\xb9\x9e\x83\x3b\x31\x4c\x39\x95\xe5\x16\x73\x2e\xf4\x24\xb2\xbe\xd7\x2d\xf2\xa3\x8d\x7b\xad\x84\xf4\xa9\xa1\xef\x45\x58\x0c\x05\x0e\x25\x64\x1d\x2d\xcd\xc0\x34\x45\xf4\xca\xb8\xda\xe8\x98\xa9\xef\x77\xe3\xe3\xcb\xeb\xb7\x97\x6f\x7f\x9c\x5e\xf9\xc4\x09\x0f\xab\x7d\xb6\x4c\xcb\xb6\xff\xae\xd1\x26\xf3\xcd\x6b\x1a\x23\x6f\x3f\xc5\xc6\xfb\x2d\xb0\x85\x45\xed\x73\xdd\x17\xfe\x32\xa2\x1b\xf4\x76\x68\xa3\x05\x7b\xee\x21\xf2\xc1\xd7\x4f\xff\x6b\x9e\x5e\xba\x09\x1c\xed\xf8\x16\x77\x96\x29\xc3\xe6\x58\x6b\x2c\x88\x2b\x72\x8d\x75\xc9\x8a\xe4\x1e\xa0\x14\x94\xec\xa8\x92\x87\xc4\xda\xbd\xfb\x7a\x6a\x39\x7e\x70\xd8\x8a\xb2\x04\xa3\x94\x24\x2a\xea\x2c\xcc\xa0\x0e\x34\x63\x7c\x65\xe1\x5a\x46\xb8\x3d\x52\x67\x2c\xb2\x89\xd8\x43\x24\xce\xa9\x09\xcc\x4a\x35\x25\x27\x78\x06\x6d\x06\x1f\x8c\xef\x9e\xf6\xbb\x17\x24\xed\x7e\x8d\x3f\x9b\xb4\x88\x9c\xfc\xc8\x52\x12\x2e\x6f\x81\xd2\xbf\xbb\xb5\x0a\x9d\x07\x4f\x16\x0f\x30\xe9\x0e\x31\xdb\x0c\x2e\xde\x98\x51\x37\x3f\x2e\x68\x6c\xd3\xc5\xcf\xfc\xfa\xdf\xf7\x8d\x03\x2b\x45\x25\x6c\x2e\x96\x52\xe9\x24\xa4\xb8\xa5\x03\xc3\xb9\x29\x0e\x95\xfb\x75\x5a\x8f\x10\x87\x7a\x75\x53\xad\x17\x2b\x26\x97\xc8\xe6\xc9\xaf\xb2\x7e\x69\x2d\xb6\x05\x90\x89\x7e\x97\x3b\xdf\xa1\x6d\x75\x64\x70\x49\xe6\xa9\x88\x9c\xb0\x17\x1c\x02\x93\x97\x6a\x99\x1b\xf1\x47\x0a\x40\xa9\x96\x37\xe2\x0f\x77\x3f\xf9\x09\x47\x1e\x77\x5b\x94\x49\xf7\xe2\x4e\x05\xf7\x1c\xed\x16\x51\xc2\x73\x77\xeb\x7d\xf7\x7c\x32\x94\x0a\x2b\xa5\x77\x43\x68\xbc\xc4\xb9\x80\xbe\xfb\xfe\xef\x0e\xd2\xdf\xbe\xfb\x7e\x32\x26\xba\xc4\x54\x93\x2a\x60\xc2\xe8\x59\x60\x9e\xfb\xf8\xfc\xff\x73\xfa\x33\x8e\xc7\xf5\xa2\xf2\x5a\xab\x1a\xb5\x15\x98\x7a\xf4\x88\x0c\xd8\xe3\x2b\xdf\xe2\xb6\x5a\x60\xdb\xe4\xf6\x8d\xad\x4e\x59\x6c\x86\xdf\xcf\x89\x91\x12\xb9\x72\x1b\x8e\x98\x51\x58\x50\x8d\x35\x82\xbb\x85\x78\xaf\xd9\x46\x18\x98\x37\xa2\xe4\xc3\x8d\x30\xe7\x8a\xa7\x03\x4d\xdb\x76\x12\x15\xb4\xbb\xff\x88\x10\xe4\x09\xa1\x87\x68\xbb\xf6\xde\x7e\x9f\x85\xbf\x8d\xe1\xde\xef\xb3\x4a\xc8\xd0\xec\xa1\xff\x61\xc5\x48\xe9\xe8\xa0\xc6\x9c\xca\x1f\xb2\x14\x4d\xc4\x72\x3c\x48\x51\x7e\x71\x52\x99\xdf\x93\xe3\x26\x8b\xef\xb3\x2a\x6e\x87\x36\xf4\xf3\x5c\xb3\x06\xbf\x08\x93\xfc\xea\xf5\x4e\xab\xe6\x88\x62\x58\xa9\x91\xf1\x1d\x78\x15\x6d\xe2\x6d\xb0\xc4\x82\xf2\x3f\x65\x57\xe8\xfb\xc0\xe3\x90\x62\x7b\x74\xb4\x5b\x15\xae\xc2\x93\xce\x4e\x4c\x18\x0a\x25\x2d\x73\x5f\x1f\x4a\x35\xad\xe5\xea\xac\xf7\x9e\xc3\x5c\x50\xa6\x80\xb8\xf7\xb1\x28\xdc\x38\xa7\xfd\xab\x6d\x68\x09\xf8\xc6\x5a\x10\x3a\x2e\x5b\xc6\x23\xd4\xfb\x9c\x35\x57\x1b\xd4\x5a\x70\x8e\xa9\x1a\x8c\x10\xf6\xbf\x6e\xed\x9e\x33\xbb\xa9\x31\x57\xe8\xbf\x56\x4d\x5d\xa8\x5c\x98\xbc\x6e\xe6\xa5\x28\x06\x7a\x22\x41\x36\x96\x7f\xfe\x03\x5e\x66\xc0\x4f\xbc\xd3\xa3\x9b\x11\x5d\x38\x6e\x99\x23\x6c\x84\x11\xf3\xd2\x57\x44\x54\x0d\x12\x3b\xba\x77\x58\xaa\x04\x77\x54\x5d\x28\x99\xf8\x20\xf6\xd5\xeb\x7f\x7e\xf8\x71\x72\x7a\xed\xa4\x1f\x96\x5b\xf3\xf9\x32\x37\xc8\x74\xb1\xa2\x7a\x2a\x2e\x4c\x5b\x23\xa4\xfe\x89\x4e\x9c\xd1\x2e\xcc\x71\x55\x11\xf7\x30\x9d\xeb\x8e\xc0\x46\xae\x68\x82\x72\xba\x7b\xff\xec\x9d\x7b\xe6\xae\x25\x68\xed\xb1\xf6\xcf\xb1\x03\xff\x38\xe4\xd5\x3d\x2d\xdf\x10\x91\x17\xf0\x83\x43\xd0\xfd\xb3\x10\xf7\xca\x44\xca\x1e\x0a\x60\xf8\xf3\xe8\x87\x63\xe8\xbf\xf8\xc6\x2f\x14\x02\xa4\x47\xb7\x8f\xfe\x1b\x00\x00\xff\xff\x34\xf1\xdd\x53\x51\x36\x00\x00")
 
 func wski18nResourcesEn_usAllJsonBytes() ([]byte, error) {
 	return bindataRead(
@@ -112,7 +112,7 @@ func wski18nResourcesEn_usAllJson() (*asset, error) {
 		return nil, err
 	}
 
-	info := bindataFileInfo{name: "wski18n/resources/en_US.all.json", size: 13733, mode: os.FileMode(420), modTime: time.Unix(1520546400, 0)}
+	info := bindataFileInfo{name: "wski18n/resources/en_US.all.json", size: 13905, mode: os.FileMode(420), modTime: time.Unix(1520557776, 0)}
 	a := &asset{bytes: bytes, info: info}
 	return a, nil
 }
@@ -132,7 +132,7 @@ func wski18nResourcesEs_esAllJson() (*asset, error) {
 		return nil, err
 	}
 
-	info := bindataFileInfo{name: "wski18n/resources/es_ES.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
+	info := bindataFileInfo{name: "wski18n/resources/es_ES.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)}
 	a := &asset{bytes: bytes, info: info}
 	return a, nil
 }
@@ -152,7 +152,7 @@ func wski18nResourcesFr_frAllJson() (*asset, error) {
 		return nil, err
 	}
 
-	info := bindataFileInfo{name: "wski18n/resources/fr_FR.all.json", size: 101, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
+	info := bindataFileInfo{name: "wski18n/resources/fr_FR.all.json", size: 101, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)}
 	a := &asset{bytes: bytes, info: info}
 	return a, nil
 }
@@ -172,7 +172,7 @@ func wski18nResourcesIt_itAllJson() (*asset, error) {
 		return nil, err
 	}
 
-	info := bindataFileInfo{name: "wski18n/resources/it_IT.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
+	info := bindataFileInfo{name: "wski18n/resources/it_IT.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)}
 	a := &asset{bytes: bytes, info: info}
 	return a, nil
 }
@@ -192,7 +192,7 @@ func wski18nResourcesJa_jaAllJson() (*asset, error) {
 		return nil, err
 	}
 
-	info := bindataFileInfo{name: "wski18n/resources/ja_JA.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
+	info := bindataFileInfo{name: "wski18n/resources/ja_JA.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)}
 	a := &asset{bytes: bytes, info: info}
 	return a, nil
 }
@@ -212,7 +212,7 @@ func wski18nResourcesKo_krAllJson() (*asset, error) {
 		return nil, err
 	}
 
-	info := bindataFileInfo{name: "wski18n/resources/ko_KR.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
+	info := bindataFileInfo{name: "wski18n/resources/ko_KR.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)}
 	a := &asset{bytes: bytes, info: info}
 	return a, nil
 }
@@ -232,7 +232,7 @@ func wski18nResourcesPt_brAllJson() (*asset, error) {
 		return nil, err
 	}
 
-	info := bindataFileInfo{name: "wski18n/resources/pt_BR.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
+	info := bindataFileInfo{name: "wski18n/resources/pt_BR.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)}
 	a := &asset{bytes: bytes, info: info}
 	return a, nil
 }
@@ -252,7 +252,7 @@ func wski18nResourcesZh_hansAllJson() (*asset, error) {
 		return nil, err
 	}
 
-	info := bindataFileInfo{name: "wski18n/resources/zh_Hans.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
+	info := bindataFileInfo{name: "wski18n/resources/zh_Hans.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)}
 	a := &asset{bytes: bytes, info: info}
 	return a, nil
 }
@@ -272,7 +272,7 @@ func wski18nResourcesZh_hantAllJson() (*asset, error) {
 		return nil, err
 	}
 
-	info := bindataFileInfo{name: "wski18n/resources/zh_Hant.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
+	info := bindataFileInfo{name: "wski18n/resources/zh_Hant.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)}
 	a := &asset{bytes: bytes, info: info}
 	return a, nil
 }
@@ -329,14 +329,14 @@ func AssetNames() []string {
 
 // _bindata is a table, holding each asset generator, mapped to its name.
 var _bindata = map[string]func() (*asset, error){
-	"wski18n/resources/de_DE.all.json": wski18nResourcesDe_deAllJson,
-	"wski18n/resources/en_US.all.json": wski18nResourcesEn_usAllJson,
-	"wski18n/resources/es_ES.all.json": wski18nResourcesEs_esAllJson,
-	"wski18n/resources/fr_FR.all.json": wski18nResourcesFr_frAllJson,
-	"wski18n/resources/it_IT.all.json": wski18nResourcesIt_itAllJson,
-	"wski18n/resources/ja_JA.all.json": wski18nResourcesJa_jaAllJson,
-	"wski18n/resources/ko_KR.all.json": wski18nResourcesKo_krAllJson,
-	"wski18n/resources/pt_BR.all.json": wski18nResourcesPt_brAllJson,
+	"wski18n/resources/de_DE.all.json":   wski18nResourcesDe_deAllJson,
+	"wski18n/resources/en_US.all.json":   wski18nResourcesEn_usAllJson,
+	"wski18n/resources/es_ES.all.json":   wski18nResourcesEs_esAllJson,
+	"wski18n/resources/fr_FR.all.json":   wski18nResourcesFr_frAllJson,
+	"wski18n/resources/it_IT.all.json":   wski18nResourcesIt_itAllJson,
+	"wski18n/resources/ja_JA.all.json":   wski18nResourcesJa_jaAllJson,
+	"wski18n/resources/ko_KR.all.json":   wski18nResourcesKo_krAllJson,
+	"wski18n/resources/pt_BR.all.json":   wski18nResourcesPt_brAllJson,
 	"wski18n/resources/zh_Hans.all.json": wski18nResourcesZh_hansAllJson,
 	"wski18n/resources/zh_Hant.all.json": wski18nResourcesZh_hantAllJson,
 }
@@ -380,17 +380,18 @@ type bintree struct {
 	Func     func() (*asset, error)
 	Children map[string]*bintree
 }
+
 var _bintree = &bintree{nil, map[string]*bintree{
 	"wski18n": &bintree{nil, map[string]*bintree{
 		"resources": &bintree{nil, map[string]*bintree{
-			"de_DE.all.json": &bintree{wski18nResourcesDe_deAllJson, map[string]*bintree{}},
-			"en_US.all.json": &bintree{wski18nResourcesEn_usAllJson, map[string]*bintree{}},
-			"es_ES.all.json": &bintree{wski18nResourcesEs_esAllJson, map[string]*bintree{}},
-			"fr_FR.all.json": &bintree{wski18nResourcesFr_frAllJson, map[string]*bintree{}},
-			"it_IT.all.json": &bintree{wski18nResourcesIt_itAllJson, map[string]*bintree{}},
-			"ja_JA.all.json": &bintree{wski18nResourcesJa_jaAllJson, map[string]*bintree{}},
-			"ko_KR.all.json": &bintree{wski18nResourcesKo_krAllJson, map[string]*bintree{}},
-			"pt_BR.all.json": &bintree{wski18nResourcesPt_brAllJson, map[string]*bintree{}},
+			"de_DE.all.json":   &bintree{wski18nResourcesDe_deAllJson, map[string]*bintree{}},
+			"en_US.all.json":   &bintree{wski18nResourcesEn_usAllJson, map[string]*bintree{}},
+			"es_ES.all.json":   &bintree{wski18nResourcesEs_esAllJson, map[string]*bintree{}},
+			"fr_FR.all.json":   &bintree{wski18nResourcesFr_frAllJson, map[string]*bintree{}},
+			"it_IT.all.json":   &bintree{wski18nResourcesIt_itAllJson, map[string]*bintree{}},
+			"ja_JA.all.json":   &bintree{wski18nResourcesJa_jaAllJson, map[string]*bintree{}},
+			"ko_KR.all.json":   &bintree{wski18nResourcesKo_krAllJson, map[string]*bintree{}},
+			"pt_BR.all.json":   &bintree{wski18nResourcesPt_brAllJson, map[string]*bintree{}},
 			"zh_Hans.all.json": &bintree{wski18nResourcesZh_hansAllJson, map[string]*bintree{}},
 			"zh_Hant.all.json": &bintree{wski18nResourcesZh_hantAllJson, map[string]*bintree{}},
 		}},
@@ -443,4 +444,3 @@ func _filePath(dir, name string) string {
 	cannonicalName := strings.Replace(name, "\\", "/", -1)
 	return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...)
 }
-
diff --git a/wski18n/resources/en_US.all.json b/wski18n/resources/en_US.all.json
index 6370f942..51b38083 100644
--- a/wski18n/resources/en_US.all.json
+++ b/wski18n/resources/en_US.all.json
@@ -399,6 +399,10 @@
     "id": "msg_warn_project_name_overridden",
     "translation": "The project name has been overridden. Using {{.project}}\n"
   },
+  {
+    "id": "msg_warn_package_is_public",
+    "translation": "[{{.package}}] is marked as public in manifest file, it will be visible and can be accessed by anyone"
+  },
   {
     "id": "DEBUG",
     "translation": "================= DEBUG ==================="


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services