From 799a5d514a4571747d69dbd6158de0d2c5cdf705 Mon Sep 17 00:00:00 2001 From: Xuanwo Date: Thu, 22 Jul 2021 15:50:37 +0800 Subject: [PATCH] tests: Split from cmd definitions Signed-off-by: Xuanwo --- cmd/definitions/bindata/bindata.go | 72 +- cmd/definitions/tests/.gitignore | 1 - .../tests => tests}/connstr_test.go | 0 {cmd/definitions/tests => tests}/doc.go | 0 tests/generated.go | 1836 +++++++++++++++++ {cmd/definitions/tests => tests}/service.go | 0 {cmd/definitions/tests => tests}/service.toml | 0 {cmd/definitions/tests => tests}/storage.go | 2 +- tests/storager_bench_test.go | 14 + {cmd/definitions/tests => tests}/utils.go | 4 +- 10 files changed, 1889 insertions(+), 40 deletions(-) delete mode 100644 cmd/definitions/tests/.gitignore rename {cmd/definitions/tests => tests}/connstr_test.go (100%) rename {cmd/definitions/tests => tests}/doc.go (100%) create mode 100644 tests/generated.go rename {cmd/definitions/tests => tests}/service.go (100%) rename {cmd/definitions/tests => tests}/service.toml (100%) rename {cmd/definitions/tests => tests}/storage.go (99%) create mode 100644 tests/storager_bench_test.go rename {cmd/definitions/tests => tests}/utils.go (92%) diff --git a/cmd/definitions/bindata/bindata.go b/cmd/definitions/bindata/bindata.go index f5c09b0ec..e9d7acf4f 100644 --- a/cmd/definitions/bindata/bindata.go +++ b/cmd/definitions/bindata/bindata.go @@ -1,17 +1,17 @@ // Code generated by go-bindata. DO NOT EDIT. // sources: -// definitions/features.toml (1.617kB) -// definitions/fields.toml (703B) -// definitions/info_object_meta.toml (980B) -// definitions/info_storage_meta.toml (1.193kB) -// definitions/operations.toml (8.821kB) -// definitions/pairs.toml (1.489kB) -// cmd/definitions/tmpl/function.tmpl (580B) -// cmd/definitions/tmpl/info.tmpl (1.762kB) -// cmd/definitions/tmpl/object.tmpl (2.485kB) -// cmd/definitions/tmpl/operation.tmpl (1.748kB) -// cmd/definitions/tmpl/pair.tmpl (537B) -// cmd/definitions/tmpl/service.tmpl (11.404kB) +// definitions/features.toml (1.578kB) +// definitions/fields.toml (629B) +// definitions/info_object_meta.toml (932B) +// definitions/info_storage_meta.toml (1.139kB) +// definitions/operations.toml (8.514kB) +// definitions/pairs.toml (1.426kB) +// cmd/definitions/tmpl/function.tmpl (567B) +// cmd/definitions/tmpl/info.tmpl (1.702kB) +// cmd/definitions/tmpl/object.tmpl (2.388kB) +// cmd/definitions/tmpl/operation.tmpl (1.698kB) +// cmd/definitions/tmpl/pair.tmpl (513B) +// cmd/definitions/tmpl/service.tmpl (11.025kB) // +build tools @@ -82,7 +82,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _definitionsFeaturesToml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x94\x41\x6b\xdb\x4e\x10\xc5\xef\x02\x7d\x87\x47\x2e\xff\x7f\xc1\x09\xed\xa5\xb4\x85\x9e\x4b\x6f\x85\xf6\x16\x4a\x18\x6b\xc7\xd5\x34\xab\x1d\x31\x3b\x92\xc9\xb7\x2f\x2b\x59\xb1\x31\x91\x29\x38\x87\xde\x6c\xed\xcc\x9b\x37\xef\xb7\xd2\x7d\x54\xcd\xfc\xd0\x93\xd8\xcf\xba\x0a\x9c\x1b\x93\xde\x45\x13\x3e\xe3\xe6\xe6\xa6\xae\x8e\xe7\xd8\x31\xf9\x60\x0c\xc9\x08\x9c\xe5\x57\xe2\x80\x9d\x1a\x86\xcc\x96\xb1\x6f\x15\x41\xd3\x7f\x8e\x3d\x25\x47\x76\x93\xc6\x31\x35\x36\x2d\x37\x8f\xf9\xae\xae\xea\xea\xeb\x0e\xde\x4a\x3e\xd5\xe2\x44\xdb\xc8\x61\x03\x6f\x19\x99\x6d\x94\x86\xb1\x97\x18\x91\xd4\x61\xec\x83\x25\x50\x02\x9b\xa9\x4d\x03\xcb\xf3\x3c\xf4\xbd\xda\x3c\x60\x96\xfe\x71\xaa\xbb\xa7\x0c\x49\x6e\x1a\x86\x86\x03\x24\xe1\xcb\xf7\x6f\xb7\xef\xde\x7e\xbc\xab\xab\x69\xaf\xba\xba\x1f\xc5\x7c\xa0\xf8\x10\xd6\x76\x3f\x29\x58\x5d\x9e\x9e\x2d\x7b\x4b\x8e\xa0\x9c\x4b\x06\x2d\x8d\x8c\x44\x2e\x23\xa3\xb4\x2f\x76\xb7\xc3\x9c\x4f\x86\x2b\x7a\xd3\x51\x02\x23\x4b\x37\x44\x72\x0e\xd0\x9e\x8d\x8a\x85\x79\xa5\x5b\xbc\x90\x57\x90\x3c\x05\x86\xff\x4b\x60\x81\x77\x34\x44\xc7\x96\x5b\x1a\x45\xed\xcd\x0b\x39\x4e\x67\x8c\x28\x8f\x0c\x39\xf3\x48\xe9\xe9\xd4\xe0\xdd\xca\xd0\x75\x48\xcb\x66\xc7\x25\x8a\xdc\x62\xa7\x24\xdf\x18\x93\x73\x49\x71\x73\xf8\xbd\x41\x94\xec\x1b\x04\x8e\x5c\xfe\x51\x0a\xc8\x0a\x4d\xd7\x81\xd4\xed\x6f\x6e\xfc\xa1\x63\xa7\x40\x4e\x97\xa1\x9e\x15\x5f\x03\x78\x96\xc2\xb3\xd4\x3f\x0d\x7b\xc5\xec\x6b\x80\x3f\x97\x3e\xbd\x04\xa5\x7d\x86\x9e\x9d\xfc\xd5\x90\x47\x49\x8f\x97\x39\x97\x8a\x6b\xe0\x2e\x6b\x96\xf2\xa2\xb5\xce\x6a\x3d\x2a\x1b\x12\x1a\xed\x7a\x72\xd9\x46\x46\xa7\x81\x3f\x1d\x5e\x85\x49\x13\xa3\xd0\x32\xaf\x63\x6f\x35\xe4\xcd\x74\x7b\x28\x46\xdd\xc3\x98\xc2\x5c\xb7\x33\xed\xa0\x31\xdc\x66\x7f\x8a\x87\xde\x39\xf5\x35\x7e\xe5\x5b\x79\xd9\x98\xa4\x65\x34\x65\xa8\xb7\x6c\x4b\xcd\xdf\xa2\xf9\xf0\xfe\x48\xe6\x4f\x00\x00\x00\xff\xff\x93\xa3\x27\xc3\x51\x06\x00\x00") +var _definitionsFeaturesToml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x94\x41\x8b\x13\x41\x10\x85\xef\xf3\x2b\x1e\x7b\x51\x21\x09\x7a\x11\x15\x3c\x8b\x37\x41\x6f\x8b\x84\xca\x74\xc5\x29\xd3\xd3\x35\x54\xd7\x4c\xd8\x7f\x2f\x3d\x93\xd9\x0d\x21\x13\xc4\xdd\x83\xb7\x24\xdd\xf5\xea\xbd\xf7\x35\xb9\x8f\xaa\x99\xb7\x1d\x89\xfd\xac\x02\xe7\xda\xa4\x73\xd1\x84\xcf\xb8\xbb\xbb\xab\x9e\x4e\xb1\x67\xf2\xde\x18\x92\x11\x38\xcb\xaf\xc4\x01\x7b\x35\xf4\x99\x2d\xe3\xd8\x28\x82\xa6\x57\x8e\x23\x25\x47\x76\x93\xda\x31\x0e\xd6\x0d\xd7\x87\xbc\xa9\xaa\xaf\x7b\x78\x23\xf9\x5c\x89\x13\xed\x22\x87\x15\xbc\x61\x64\xb6\x41\x6a\xc6\x51\x62\x44\x52\x87\xb1\xf7\x96\x40\x09\x6c\xa6\x36\xae\x2b\xbf\xe7\xbe\xeb\xd4\x26\xf9\x22\xfc\xe3\x5c\xf5\x48\x19\x92\xdc\x34\xf4\x35\x07\x48\xc2\x97\xef\xdf\xd6\xef\xde\x7e\xdc\x54\x25\x51\x75\x3f\x88\x79\x4f\x71\x1b\xae\x47\x3e\x3b\x5e\xcc\x4c\x8f\x5e\xbd\x21\x47\x50\xce\x25\x7a\x43\x03\x23\x91\xcb\xc0\x28\xe3\xb3\xcf\x5d\x3f\xd5\x92\xe1\x8a\xce\x74\x90\xc0\xc8\xd2\xf6\x91\x9c\x03\xb4\x63\xa3\xe2\xa0\x64\x59\xe3\x4a\x4d\x41\xf2\xd8\x13\x5e\x97\x9e\x02\xef\xa9\x8f\x8e\x1d\x37\x34\x88\xda\x9b\x2b\xf5\x8d\x67\x8c\x28\x07\x86\x5c\x38\xa4\xf4\x70\x6e\x6f\x73\x7d\xe7\x32\x9a\x39\xd6\x53\x82\xa2\x36\xbb\x29\x8d\xd7\xc6\xe4\x5c\x2a\x5c\x9d\x3e\xaf\x10\x25\xfb\x0a\x81\x23\x97\x6f\x94\x02\xb2\x42\xd3\x3f\xe3\xd3\xdd\x6f\xae\x7d\xdb\xb2\x53\x20\xa7\x5b\x28\x2f\xae\x3e\x07\xeb\x24\x85\x47\xa9\xff\x18\xf1\x82\xd5\x17\xc0\x7d\xa9\x7c\x8e\xbe\x8c\x4f\xa8\xb3\x93\xbf\x04\xe8\x28\xe9\x70\x8b\x6e\x39\x7f\x0e\xd2\x39\x5f\xb9\x5e\xb4\x96\x08\x2d\x37\x64\x7d\x42\xad\x6d\x47\x2e\xbb\xc8\x68\x35\xf0\xa7\xd3\xbb\x1f\x15\x31\x08\xcd\xdb\x5a\xf6\x46\x43\x5e\x8d\x2f\x86\x62\xd4\x23\x8c\x29\x4c\xf7\xf6\xa6\x2d\x34\x86\x75\xf6\x87\x78\x9a\x9d\xca\x5e\xa0\x56\xfe\x0d\x6f\xfb\x92\x34\x6f\xa6\x0c\xf5\x86\x6d\xbe\xf3\x77\x40\x3e\xbc\x3f\xf1\xf8\x13\x00\x00\xff\xff\x02\x8a\xc0\x31\x2a\x06\x00\x00") func definitionsFeaturesTomlBytes() ([]byte, error) { return bindataRead( @@ -98,11 +98,11 @@ func definitionsFeaturesToml() (*asset, error) { } info := bindataFileInfo{name: "definitions/features.toml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5f, 0x6f, 0xdb, 0x18, 0x99, 0x8, 0x38, 0xa, 0xb1, 0xa2, 0x8f, 0x2, 0x18, 0x53, 0x23, 0x34, 0x7b, 0x96, 0x1c, 0xdf, 0x8, 0xf5, 0xaa, 0x9c, 0xc1, 0x62, 0x4, 0x4, 0x8d, 0x89, 0xf2, 0x23}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe8, 0xde, 0x64, 0x57, 0x6f, 0xe4, 0xa1, 0x28, 0x9a, 0xdf, 0xf5, 0xa, 0x78, 0xe3, 0xe7, 0xe5, 0x4c, 0x35, 0xce, 0xe9, 0xb8, 0x4b, 0x32, 0xb7, 0xb2, 0xdc, 0x74, 0xc5, 0x98, 0xd5, 0x9f, 0x28}} return a, nil } -var _definitionsFieldsToml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x92\xbd\x4e\xc3\x40\x10\x84\x7b\x4b\x7e\x87\x28\x65\x0a\x57\x88\x8e\x86\x8e\x02\x11\x41\x41\x61\xa5\x58\xdb\x1b\xb3\x90\xf8\xac\xb9\x41\xfc\x3c\x3d\x85\xed\xb0\x07\xbe\xd6\xdf\xee\xcc\xec\xf8\xea\xc6\x0e\x65\xc1\xaf\x51\x37\x37\x9b\xed\xee\xf6\x14\xda\xb7\x3b\x2a\x84\x01\xdb\xb2\x28\x8b\xba\xb1\xce\x4d\x44\xc2\x86\xfe\x42\xa2\x43\xf5\xc1\xc3\x2e\x32\xb3\xa6\x80\x23\x0a\x2c\x4e\x36\x74\xfa\xe9\x90\x0d\x9c\xc0\x59\x29\x3e\xe5\x13\x03\xa4\xd7\x7b\xa5\x4c\x03\x43\xba\x75\x7d\x35\x7f\x96\xb3\x66\x42\x04\xaf\xf7\xd0\xbc\x6a\x3b\x7b\x85\xe3\x31\x2a\xd7\xf5\x82\xfd\xdf\x4a\xcb\x1a\xc5\xe0\x3b\xa9\xaa\x6a\x2f\x76\x81\xf0\xc2\xbb\xbd\x80\xbf\x24\xad\x32\x81\x7c\xc9\x5c\x31\xda\x5f\xbd\x34\x8e\x2f\xda\x42\xf5\xa8\xd2\xe9\x8c\xa2\x7d\xeb\xfa\x95\x11\x6d\xc6\x2e\xd2\x56\x7e\x03\x52\xcf\xc8\x00\xaf\xbc\x4c\x4d\xf4\x1d\xa7\x8c\xf8\x47\x9a\xf5\x19\xc6\x65\x89\x82\x5e\x57\x9f\xd3\x4f\x00\x00\x00\xff\xff\x57\xd9\x59\x67\xbf\x02\x00\x00") +var _definitionsFieldsToml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x92\xbd\x4e\xc3\x40\x10\x84\x7b\x3f\x45\x94\x32\x85\x2b\x44\x47\x43\x47\x81\x88\xa0\xa0\xb0\x52\xac\xed\x8d\x59\x48\xee\xac\xb9\x41\xfc\x3c\x3d\xb2\x93\xe8\xd6\xe4\xda\x6f\xd6\xdf\xee\x8d\xdc\xb4\xb6\xab\xf8\x33\xea\xea\x6e\xb5\xde\xdc\x1f\x62\xf7\xf1\x40\x85\x30\x62\x5d\x55\x4d\x6b\x7d\x8e\x13\x61\x61\x38\xe3\x94\x79\xb3\xcb\x49\x9f\x58\xfa\x40\x81\x8c\x15\x38\xd9\x2d\xf4\xfa\x9d\xb9\x05\x4e\xf4\xa8\x14\x77\xd3\x0b\x23\x64\xd0\x47\xa5\x4c\x69\x58\xcc\xdf\xde\xcc\x4c\x8e\x5a\xda\x1a\x9d\xe6\xa9\x7d\xd7\x6e\xf6\xc7\xfd\x3e\x29\x0b\x9a\x68\x57\xf3\xbe\x8b\x51\x0c\xee\xd5\x75\x5d\x6f\xc5\xce\x09\x9c\x6f\xb3\x15\xf0\x82\x17\x35\xb9\x84\x6f\xa5\x83\x47\xfb\xa7\xf1\xfb\x5d\x83\x16\xeb\x67\x95\x5e\x67\x9e\xec\x57\x0b\xaf\x49\xe8\x4a\x2b\x12\xed\xba\x5c\xf8\x3d\x89\x11\x4e\x78\x19\x99\xa2\x4f\x1c\x4a\xce\xaf\xc5\x65\xaf\x30\x9e\xc6\x29\x18\xb4\xf0\x3f\xfc\x05\x00\x00\xff\xff\x5e\x00\x81\xc5\x75\x02\x00\x00") func definitionsFieldsTomlBytes() ([]byte, error) { return bindataRead( @@ -118,11 +118,11 @@ func definitionsFieldsToml() (*asset, error) { } info := bindataFileInfo{name: "definitions/fields.toml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x77, 0x16, 0x26, 0x7, 0x25, 0x87, 0x65, 0x62, 0x4, 0x66, 0x65, 0x98, 0x3a, 0xb, 0x61, 0x89, 0x47, 0x92, 0xac, 0xcd, 0x20, 0x2a, 0xf, 0x39, 0xce, 0x28, 0x68, 0x77, 0xa, 0x8, 0xf5, 0xa6}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xcc, 0xb, 0x49, 0xd5, 0x55, 0xd0, 0x53, 0xe5, 0xf1, 0x7e, 0x39, 0x5e, 0x69, 0x19, 0x7c, 0x8a, 0xfe, 0xc, 0x85, 0x91, 0xea, 0x1c, 0xef, 0xdc, 0x3f, 0x33, 0x62, 0x5b, 0x2c, 0xfe, 0xb1, 0x7}} return a, nil } -var _definitionsInfo_object_metaToml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x52\xc1\x8e\xd3\x40\x0c\xbd\x57\xea\x3f\x58\xbd\xec\x29\x7b\x02\x6e\x7b\x40\xda\x0b\x12\xd5\x22\xb1\x88\x43\xb5\x87\x69\xc7\x49\x4c\x33\xe3\xc1\x76\x80\x0a\xf1\xef\x68\x26\x09\x34\x6d\x2a\xed\x6d\xc6\x7e\x7e\xcf\x7e\xf6\xce\xa5\x84\xd1\x57\x5c\xd7\x8a\xf6\xb2\x5e\xd9\x29\x21\x3c\xc0\x86\xa2\xbd\x7b\xb3\x59\xaf\x3c\xea\x41\x28\x19\x71\xcc\xe1\xf7\x05\xfe\x54\xd0\x40\x0a\xd6\x22\x0c\xb5\xc0\x75\xf9\x0d\x84\xc0\xfb\x6f\x78\xb0\xfb\xcd\x7a\xb5\x5e\xed\x0e\x1c\x0d\xa3\x55\x1d\xc6\xc6\xda\x05\x95\x33\x4c\xf0\x6f\xcf\x00\x6a\x42\xb1\x99\x23\x72\xee\x06\x04\xcd\x35\x37\x52\xe4\x97\x12\xf8\x2b\xb1\x18\x3c\x80\x49\x8f\x57\xd3\x7e\x78\x9c\x66\xec\x23\x7d\xef\x11\x8e\x78\x02\x8a\xa0\xc6\xe2\x1a\x1c\xa7\xeb\x9c\x5a\x15\xd8\x53\x4d\x78\x2e\x62\x14\xf0\xfe\x99\x02\x8e\x30\x8a\xc7\xca\x9c\x34\x33\x9f\xff\x75\x72\x21\xfd\x91\xe2\xf1\xb9\x80\xa7\x16\xf4\x14\x32\x05\x0c\x14\x50\xb3\x40\xf9\xcf\x9c\x0e\xec\xcf\xbd\x79\x2a\xb9\x2d\x7b\xbc\x9e\x35\xa3\xfb\xce\x28\x39\xb1\x6a\xd9\x9d\x8b\x9e\xb6\x13\xfc\xbf\x2f\xf9\x07\xe4\xf3\xf2\xcb\x73\xd6\x4c\x72\xb3\x65\xbf\xd2\xf4\x4f\xce\xda\x4c\x8f\x64\x2d\xca\x70\x53\x7b\xe5\xae\xb7\x2c\x67\x2d\xf0\x10\x14\xec\x9c\xd1\x8f\x31\x68\xfc\xd3\x89\xd7\x69\x35\x77\x0a\x5f\x59\x8e\x8f\x24\xe0\x31\x1f\xa4\x02\x47\xe8\x15\xe5\x4e\x81\x62\xea\xa7\x1e\xf5\xa4\x86\xa1\x0a\x68\xce\x3b\x73\xf3\xdb\x44\xa9\xdd\x01\x7f\xff\xb9\xb6\xe2\x73\x29\xdb\x8e\x55\x45\x15\x15\x06\x32\xf0\x58\x53\x44\x0f\x13\xe9\x28\x95\xd5\x97\x84\x82\x4b\xbb\xc1\x9b\x97\x5b\xce\x7f\x51\x94\x4b\xb1\x4c\xb7\x28\xf5\x37\x00\x00\xff\xff\xe1\x5c\x33\x3c\xd4\x03\x00\x00") +var _definitionsInfo_object_metaToml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x52\xb1\x8e\xd4\x40\x0c\xed\xf3\x15\xd6\x36\x57\xe5\x2a\xa0\xbb\x02\xe9\x1a\x24\x56\x87\xc4\x21\x8a\xd5\x15\x73\x3b\x4e\x62\x36\x33\x1e\x6c\x07\x58\x21\xfe\x1d\xcd\xcc\x45\x1b\xb2\x41\xba\x6e\xc6\x7e\x7e\xcf\x7e\xf6\xc1\xa5\x84\xd1\xb7\xdc\x75\x8a\xf6\xd4\xd8\x39\x21\xdc\xc1\x8e\xa2\xbd\x7b\xb3\x6b\x3c\xea\x51\x28\x19\x71\xcc\xd1\xf7\x05\xfc\x50\xb0\x40\x0a\x36\x20\xd4\x4a\xe0\xae\xfc\x2a\x1d\xf0\xf3\x37\x3c\xda\xed\xae\x69\x0e\x47\x8e\x86\xd1\xda\x11\x63\x6f\xc3\x95\xc2\x05\x10\xfc\xdb\x4b\x56\x4d\x28\xf6\xcb\x74\xce\x6c\xe5\xd1\x5c\xbf\x15\x27\x7f\x1d\xc5\x5f\x89\xc5\xe0\x0e\x4c\x26\x5c\x0f\xf7\xe1\x7e\x1e\x69\x8a\xf4\x7d\x42\x38\xe1\x19\x28\x82\x1a\x8b\xeb\xb1\x0c\x33\x3a\xb5\x36\xb0\xa7\x8e\x70\xc1\x6f\x14\xf0\xf6\x91\x02\x16\x0c\xc5\x53\x6b\x4e\xfa\xa5\x9f\x73\x07\x2b\xcd\x8f\x14\x4f\x8f\x05\x3a\x6b\xeb\x39\x64\x02\xa8\x04\xd0\xb1\x40\xf9\x2f\x1c\x0d\xec\x17\x4e\x3c\x94\xc4\x9e\x3d\xae\xe7\x6b\x0e\x61\x1a\x8d\x92\x13\x6b\xb7\xdc\x58\xf5\xb2\x9f\xc1\x17\x23\xf2\x0f\xc8\xe7\xe5\x96\xe7\xa2\x89\xe4\x96\xcb\x7c\x95\xc1\x9f\x9c\x0d\x99\x19\xc9\x06\x94\x7a\x2e\xcf\xca\xe3\x64\x59\xc9\x06\xe0\x1a\x14\x1c\x9d\xd1\x8f\x97\xa0\xf1\x4f\x27\x5e\xe7\x35\xdc\x28\x7c\x65\x39\xdd\x93\x80\xc7\x7c\x6b\x0a\x1c\x61\x52\x94\x1b\x05\x8a\x69\xaa\xed\xe9\x59\x0d\x43\x1b\xd0\x9c\x77\xe6\xfe\x39\x3b\x94\xce\x1d\xf1\xf7\x9f\x2b\x07\x3e\x97\xa2\xfd\x4b\x4d\x51\x44\x85\x4a\x05\x1e\x3b\x8a\xe8\x61\xa6\x2c\x32\x59\x77\x43\x24\xb8\x74\xa8\x96\x3c\xfd\xc7\xec\x2f\x8a\xb2\x16\xca\x64\x5b\x32\x7f\x03\x00\x00\xff\xff\x6b\x55\xfd\x86\xa4\x03\x00\x00") func definitionsInfo_object_metaTomlBytes() ([]byte, error) { return bindataRead( @@ -138,11 +138,11 @@ func definitionsInfo_object_metaToml() (*asset, error) { } info := bindataFileInfo{name: "definitions/info_object_meta.toml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd7, 0x54, 0xee, 0x26, 0x7f, 0x5e, 0xca, 0x23, 0x78, 0xd9, 0xf8, 0x1e, 0x55, 0xba, 0xa7, 0x99, 0x2a, 0xe, 0xcc, 0x3c, 0xe2, 0x1c, 0x9f, 0x4a, 0x69, 0x76, 0x6f, 0xbc, 0x1d, 0x51, 0x1e, 0x8d}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x97, 0xc7, 0x12, 0x2e, 0xc1, 0x1f, 0x6, 0x2a, 0xc2, 0xf5, 0x95, 0x4b, 0x90, 0x32, 0x59, 0x47, 0x96, 0xc7, 0x79, 0xa4, 0x2e, 0x79, 0x2f, 0x9b, 0xb9, 0xb8, 0xbf, 0x8, 0xb1, 0xc3, 0x8c, 0x18}} return a, nil } -var _definitionsInfo_storage_metaToml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x92\xcd\x6e\xab\x30\x10\x85\xf7\x48\xbc\x83\x95\x3d\x77\x75\xd5\x5d\x1e\x21\xab\x2e\xab\x2e\x26\x78\x48\x47\x8d\x7f\x34\x1e\x1a\x68\xd5\x77\xaf\x6c\x03\x6a\x44\x92\x92\xb0\xc4\xcc\xf9\xbe\x63\x79\x5e\xc0\x7b\xb4\xba\xb2\xad\xd9\x23\x57\x06\x3a\x32\xad\x79\x2d\x0b\xe9\x3d\xaa\xad\xda\x90\x95\x4d\x59\x68\x0c\x35\x93\x17\x72\x36\x1e\xee\xa0\x53\x39\xa8\x72\x30\x28\xb2\xe3\x89\xf3\xc8\x10\x27\xff\x6d\xca\xa2\x2c\x46\x43\xa0\x4f\xbc\xcc\x7f\xfa\x7f\xd3\x10\x83\x11\xef\x91\xff\x50\x88\x13\x38\x3e\x2e\x4a\xf1\x49\x77\x45\x55\x3b\xdf\xdf\xaf\x88\x83\x99\xdc\x38\x56\x91\x31\x03\x37\x28\xf5\xdb\x5a\x72\x82\xcc\xd0\x47\x57\xa7\xcf\x5f\xc0\x20\x4c\xf6\x90\x7f\x1b\xf7\x81\x6b\xc5\x91\x31\xf3\x9a\xf6\x28\xe4\x81\xe5\xfe\xf5\x4a\xf4\x18\x1d\x16\x2c\xbe\xc8\x84\xbb\x21\x7a\xec\x1a\x09\x9a\xee\xa2\xb1\x21\x8b\x5a\xed\x7b\x15\xc4\x31\x1c\x90\xaf\x38\xc8\x2e\x74\xe4\xc1\x45\x0e\x0b\x06\x2f\x3d\x12\x76\xde\xb1\xa8\xad\x12\x6e\x31\x4d\x86\x3e\x08\x9a\xca\xa0\x80\x06\x81\xf3\x1a\xc8\x0d\xd4\xf8\xf5\x3d\x2f\xf3\x9c\x62\xbb\x21\x95\xf4\x18\x54\x86\x4d\xbd\x46\xe8\x50\xea\xe4\xf8\xbd\xd2\xc4\xcb\x8a\x9d\x98\x64\xf5\x36\x25\xc8\xf9\x2b\xff\x04\x00\x00\xff\xff\x89\x57\xe9\xb0\xa9\x04\x00\x00") +var _definitionsInfo_storage_metaToml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\xd2\xbd\x72\xab\x30\x10\x05\xe0\x5e\x4f\xa1\xa1\xe7\x56\x77\xd2\xf9\x11\x5c\xa5\xf4\xa4\x58\xa3\xc5\xd9\x09\xfa\x99\xd5\x12\x43\x32\x79\xf7\x8c\x84\x21\x63\x4c\x1c\xdb\x94\x08\x9d\xef\x2c\x48\x3b\x08\x01\x9d\x29\x5d\x6b\xf7\xc8\xa5\x85\x8e\x6c\x6b\x5f\x94\xf4\x01\xf5\x46\x17\xe4\xa4\x50\x06\x63\xc5\x14\x84\xbc\x4b\x6b\x5b\xe8\xf4\x10\xd3\x43\x2c\x6a\x72\xe3\x8a\x0f\xc8\x90\x76\xfe\x2b\x94\x1a\xf5\x48\x1f\xb8\x68\x3f\xfd\xbf\xa6\xa7\x58\xa2\x03\xf2\x55\x5e\xbc\x40\xf3\x68\x49\x0e\x4f\x55\x8b\x35\x95\x0f\xfd\xbd\x7c\xda\x36\xa8\xb5\x67\x9d\x84\x19\x5a\xa3\x54\xaf\xeb\xd4\x4c\xcc\xd8\xc6\x57\xf9\xe1\x07\x8b\xc2\xe4\x0e\xe9\x9d\xf5\xef\xb8\xae\x31\x09\xb3\x42\xdb\x36\x42\x01\x58\xee\xbd\x43\x59\x4e\xc1\xd3\x2d\x4a\xbf\x7f\xc2\x7e\x2d\x79\x64\xfc\x0c\xe6\x6f\x30\x58\x93\x43\xa3\xf7\xbd\x8e\xe2\x19\x0e\xc8\x8b\x3e\xb9\x9b\xfc\x61\xdb\x0d\xbe\x03\x8b\x97\x27\x82\x5d\xf0\x2c\x7a\xa3\x85\x5b\x54\x6a\x17\xfb\x28\x68\x4b\x8b\x02\x06\x04\xce\xea\x91\x6b\xa8\xf0\xf3\xeb\x62\x88\xe7\x1c\xda\x9e\x32\xb9\x16\xa3\x1e\xa8\x69\x9e\x91\xcc\xc3\x1c\x3d\xbf\x95\x86\xf8\xef\x81\x8e\x4c\xb2\xf2\xc6\x64\xe2\xec\x34\xbf\x03\x00\x00\xff\xff\x41\xde\xf8\x57\x73\x04\x00\x00") func definitionsInfo_storage_metaTomlBytes() ([]byte, error) { return bindataRead( @@ -158,11 +158,11 @@ func definitionsInfo_storage_metaToml() (*asset, error) { } info := bindataFileInfo{name: "definitions/info_storage_meta.toml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x95, 0x7b, 0xfb, 0xde, 0xc2, 0x31, 0x32, 0xc, 0x66, 0x36, 0x3c, 0xc7, 0x1c, 0xb4, 0x38, 0xf3, 0xfa, 0x96, 0x59, 0x89, 0x26, 0x65, 0x81, 0x58, 0x5c, 0xfd, 0xed, 0x1b, 0xe8, 0x11, 0x94, 0x7}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9c, 0xdc, 0x18, 0x27, 0xc0, 0x7d, 0xb9, 0x57, 0x8b, 0xe9, 0x90, 0xfd, 0xf8, 0xb3, 0x2, 0x40, 0x16, 0xce, 0x94, 0xf9, 0x18, 0x51, 0x52, 0x7a, 0xff, 0x6b, 0x10, 0x2d, 0x50, 0x8, 0x2e, 0xb0}} return a, nil } -var _definitionsOperationsToml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5a\xcd\xae\xdb\xb6\x12\xde\x1b\xf0\x3b\x0c\xdc\x45\x36\x3e\x46\x5f\x20\x8b\xf4\x9c\x5c\xdc\x00\xf9\x29\x6e\xda\xdb\x45\x10\xc4\xb4\x34\xb2\x78\x43\x91\x2a\x49\xd9\xf5\x7d\xfa\x62\xf8\x23\x51\xb2\x24\xeb\xb8\x07\x5d\x75\x13\xf8\x48\x9c\x1f\xce\x7c\x33\xf3\x91\xca\x17\x56\xd7\x28\x73\xd4\x5f\xd7\xab\x1c\x4d\xa6\x79\x6d\xb9\x92\xf0\x1a\x36\xdc\x80\x2d\x11\xb8\xb4\xa8\x0b\x96\x21\x14\x4a\xc3\x1b\xb7\x1c\x34\x0a\x66\x31\x07\x55\xa3\x66\x24\x60\x76\x9b\xf5\x6a\xbd\x6a\xd5\xed\x54\xbd\xcb\x34\x32\x8b\xdf\xfc\xa3\xaf\xeb\x55\xcd\x34\xab\x0c\xbc\x86\x2f\x9b\x9a\xd9\x72\xf3\x75\xbd\xd2\x68\x1a\x61\xfd\x33\xb5\xb9\xf6\x61\xb3\x59\xaf\xce\x5c\x08\xf0\xba\x80\x49\xf0\xea\x40\x1d\xfe\x87\x99\xdd\x91\xd1\x1f\x7e\x80\x9f\xb0\x64\x27\xae\x34\xfd\xf9\x00\x8f\x6e\x71\x70\xf5\xf3\xbf\x3f\xfd\xfa\xfe\xe9\x4a\x01\x3b\x08\x0c\x4a\xe0\xcc\x6d\x09\xb5\x32\xdc\x99\xfd\x11\x98\xcc\xc1\xf0\xff\x23\xfc\xb8\x9b\x52\xf7\xf1\xd3\x2f\xa0\xd1\x36\x5a\x92\x4a\xd4\x5a\x69\x60\x3e\x60\x41\x29\xfe\xc1\x0d\xf9\x07\xf0\x00\x9f\x51\x9f\x78\x86\xad\x2f\x25\x66\xdf\x9d\x95\x1c\x05\x5a\x4c\xc5\x78\xe1\x25\xcd\x6e\xbd\x72\xdb\x1f\x04\xf5\xac\x79\x1a\xd3\x41\xbc\x5c\xac\x42\x84\x32\x25\x2d\x4a\x0b\x56\x5d\x87\x6d\xd3\xcb\x86\xda\x6c\x61\xa3\xe9\x1f\xda\xf5\x30\x2f\x92\x1e\x78\xb9\x6f\x95\xca\x91\xec\x78\x6d\x23\x29\x57\x55\xc5\xed\xbc\x7b\x7e\x8d\xdb\x7e\xc1\x25\x37\x65\xe2\x5e\xad\x55\x86\xc6\x5c\xf9\x37\xef\xc1\x41\xa8\xec\xfb\x62\x08\xff\x44\xab\xa7\x11\x1c\x94\x25\x00\x76\x4f\x5e\x08\xbf\x20\xf1\x0c\x4e\xe1\x24\x82\x23\xe0\xbc\x9f\x7f\x09\x6f\xb6\x64\x16\x4a\x66\x40\x32\xcb\x4f\x08\xa6\xa9\x6b\xa5\xad\x0b\xc3\x5e\x9d\x50\x3b\x34\xed\x21\x57\x68\xe4\x2b\x0b\x1f\xdf\xbe\x7d\x22\xbc\x78\x80\x0e\x95\x1b\x50\x1a\xa4\x1a\x35\x12\x35\x94\xec\x84\xb7\xac\xdd\x59\x05\x49\x62\x7c\x11\xc4\xbc\x8c\x81\xcc\xad\xe8\x95\x80\x8f\xfa\x3c\xf2\xb7\xb0\x39\xf0\x7c\x49\x01\x38\x65\xd7\x80\x51\xd5\x81\xcb\x79\xcf\xc2\x1a\xef\x8e\x21\x6c\xba\xfa\x9c\x2e\xcc\x03\xcf\xcd\x62\x0f\x04\x37\x76\xd6\x3c\x2d\x88\xb6\x0f\x28\x94\x3c\x52\x74\x6c\xc9\xcd\x94\x0b\x83\x68\x1c\xf8\xbc\x33\x99\xaa\xf9\xe2\x5a\x7c\x54\xf5\x65\x97\xca\xf9\x28\xd6\x97\x7e\xb9\x19\x9d\x51\x24\x72\x63\x67\x6b\x4c\xd5\x17\x0a\xe5\x27\x8f\x21\xa5\xa1\x6a\x84\xe5\x75\xd7\xe8\xb9\x74\x3e\x18\x8f\xdc\x89\xe1\x41\x5a\x94\x14\x17\xaf\x4f\x49\x74\x18\x75\x4f\xe8\x8f\xb6\x6c\xd3\x1a\x78\xfa\xf4\xf1\xd5\x2f\x6d\xf9\x44\xe0\x7b\x87\x40\x2a\xf9\x80\x55\x6d\x2f\x90\x73\x8d\x99\x55\xfa\x42\xce\xb9\xb7\x05\x17\x68\x40\x63\xd6\x68\xc3\x4f\x28\x2e\x41\xf1\xaf\x06\x75\xab\x8f\x57\xb5\xc0\x8a\x80\x3c\xa3\x91\xb9\x96\x5f\x5f\x52\x65\x70\xb8\xd0\x86\x2b\x83\xa2\x08\x8a\x1f\xbd\x06\xb2\xeb\xcb\xa2\xd3\x10\xea\x32\xb4\x99\xfd\x5b\xad\x7d\x24\x3f\xa8\x1c\xdf\xc9\x13\x13\x3c\xdf\xef\xda\x10\xcd\x37\xa6\xdc\xd8\x7e\xef\x78\xf1\xce\x74\x65\xe1\x6f\xe8\x4e\x89\xcd\xb4\x43\x3d\xc0\x1b\x30\x4d\x46\x93\xab\x68\x02\x0e\x55\xed\xc7\x0a\x98\x52\x35\x22\x87\x03\x75\x23\xca\xa3\xc5\x2d\x9c\x4b\x9e\x95\x50\x21\x93\x66\xa0\xf7\x95\x69\x9b\x16\xd9\xae\xd0\xb2\x9c\x59\x96\x68\x71\x00\x66\x15\x52\x94\x8d\xce\x3a\x3c\xc6\x3e\x49\x09\x5d\x5a\x7f\x4f\x31\xf9\xbb\x44\x36\x19\x7d\x39\x1f\xd1\x74\x3d\xd0\x72\xae\xc7\xbb\xc7\xe4\x9c\x5c\xaf\xbe\x14\x68\xb3\x72\xb1\xa7\xff\xa2\xd5\xc1\xcb\x20\x49\x7e\xba\x9f\x23\xb3\x79\x0b\x9b\x46\x8b\xb9\x6e\xe1\x24\xa1\xd0\xaa\x02\x06\x47\x7e\x42\x09\x8d\x16\x84\x31\x52\x30\xde\x1b\x9c\x13\xcf\x1c\xc9\x23\x00\xf1\xa6\x5b\xe6\xb1\x08\x22\xf7\xc0\x43\xe3\xef\x0d\xd7\x5c\x1e\xfd\x36\xe9\x55\xa3\x45\x02\x95\x8a\x70\xbf\x30\x01\x1f\xd4\x09\x77\x89\x18\x45\x9f\x7e\xdc\xd3\xa9\x49\xae\x1b\x7a\x8b\xda\x32\x99\xf7\x4d\xb8\xf2\xbf\xee\x6f\xcb\xde\xfa\x58\x13\x9d\x6f\xbe\xd3\x72\x23\x7d\xf6\x83\x5f\xfc\x97\xfa\xac\xd3\xf1\x4f\x9f\x9d\x2a\x23\x0f\x84\xb6\x8a\x82\xc2\xbf\xaf\xd1\x7a\x76\xc1\xb4\x5d\x5e\x43\x51\x62\xfa\xf8\x91\x28\x4d\xfa\x70\xfb\xf4\x25\x8f\x21\xad\xd2\xb9\x53\x74\xe7\xf2\xf3\xdb\xde\x48\xa0\x3a\xf6\x9e\x6e\x69\x21\x83\xef\x1c\xbe\xc5\xe2\xb9\xcc\xf1\x8f\x6b\x1e\xbf\x85\x0d\x89\x8f\x10\x58\xf7\x78\x34\x01\x01\x4b\x37\xfd\x8d\x0b\x53\x3f\xa1\xa9\x85\x62\x79\xe0\x66\xd2\x58\xdd\x64\xb6\xa3\xa8\x63\xdb\x20\xb1\x31\xba\x3f\xe9\xa0\x63\xfc\xb7\x9c\x73\xac\xdf\xa9\x1e\x92\xfe\xe9\x98\x0e\xa2\x57\x8f\xf1\xfe\xce\xab\x9a\x1d\x17\x97\xc1\xcf\xec\x88\x23\x15\x10\xaa\x35\x36\x0c\xcd\x64\xae\x2a\x8f\x83\x5d\x62\x24\x29\x0b\xfa\xfb\x25\x2b\x82\xf4\x2d\xb8\x59\x72\xfe\xdf\x5f\x0e\xed\x2e\x7c\x21\x84\x4d\x2c\xaa\x01\x53\x63\xc6\x0b\x9e\x81\x2a\x0a\x83\xb7\xeb\xc0\x2f\x5b\x72\xa0\x25\x2f\xbc\x7b\x1a\xd9\x33\x78\xd9\x7f\x68\xf5\xae\x27\x49\x5b\x73\x3f\x27\x76\x55\x6b\x75\xe2\x39\xc5\xfc\xcc\x2e\xb1\x47\x67\x4c\x82\x13\x4a\x42\xb7\x80\x4c\x06\x92\xb7\x5e\x7d\x09\xec\x61\xc4\x6f\x52\x5d\x31\x2e\x2d\xe3\x32\xa9\x4d\x63\x95\xa6\x44\x06\xc1\xd8\x80\xa3\x9e\x0e\x66\x4b\x18\x70\x50\xa6\x81\x4b\x63\x99\xcc\x70\xe0\xbb\x64\xd5\xd5\xc5\x1a\xc9\xe0\xc0\x7b\xb2\xea\x07\xe1\x84\xd5\x30\x25\xd9\x62\x8b\x03\xe5\x47\x9c\xea\x11\x47\xb4\xc0\xc0\xd1\x8f\x6b\xe5\x2e\xd7\x91\xa0\xdd\xbf\x35\xea\x43\x73\x2d\x8a\x09\x71\x6d\xdb\x40\x23\x73\xd4\xbe\x5f\x25\x3e\xf4\x0d\xf2\x68\x2e\x88\x2f\xc4\xef\x00\x05\x11\x04\x41\x49\x2f\x1d\x23\x50\xac\x19\xd7\xa1\xf6\xba\x72\x9a\x6b\x37\x31\x7d\x2d\xf7\x75\xcc\x7c\x96\xf9\x3e\x79\x11\xc7\x74\xf3\xf8\xfb\x7e\xf6\xab\xd1\xf3\x58\x21\xe6\xd9\xae\x5f\xf7\x8d\x32\xd2\x67\xb7\xad\x47\xdc\x00\xcf\xb1\xaa\x15\x75\xa7\x68\xbb\xa3\x67\x71\xab\xe2\xcc\x2e\x26\xf6\x48\xc9\x85\x6f\x92\x61\x7d\x50\x15\x9a\xa9\xc4\x13\xea\x96\x18\xfb\x21\xf9\x51\xd9\xb7\xd4\x41\xf7\x3d\x81\xfe\xde\xc6\xef\x2b\x3b\xa2\x1a\x3b\x6f\x9a\xd6\xc8\xf8\x26\xe0\x18\x9c\xc8\x1a\xad\x29\x1a\x2d\x28\xa3\xd8\x10\x80\xf4\x9c\x12\x2f\x54\xc6\x04\xbc\x06\xab\x1b\xbc\xb2\x19\xe0\x3f\x0b\x24\x3f\xcf\x03\x8c\x7a\x63\x8c\xcf\x01\x2b\xf8\xeb\xab\xa8\x9b\x13\xd3\x67\xd9\xc1\x37\x89\x08\x8f\x1c\x0b\xd6\x08\x0b\xfb\xf7\xdc\xb8\x13\x89\x3f\x8a\x0c\x56\x77\x30\x69\xd7\x3d\x71\xbd\x77\x5f\x52\x54\x63\x5d\x2a\x7c\x52\x1c\xed\xff\x2f\xd7\xb6\x61\x82\x96\xf4\xb4\xf5\xb3\xb8\xff\x6c\x99\xdd\xd3\x3c\x10\x54\xa5\x5e\xf5\x7e\x22\x7d\x1a\xd9\xd4\x07\x06\x7a\xe5\x3c\xa0\xc3\xd7\x2b\x03\x31\x5d\x23\x77\x04\xe7\x7e\xec\x07\x63\x93\x88\xa4\xfa\x96\x31\x21\x0e\x2c\xfb\x3e\x3a\x45\x07\x5e\xb5\x03\x63\x09\x25\x99\x6c\x1e\x7d\x0c\x2d\x62\x2e\xc9\x97\x2c\x8a\x3f\x93\x17\x60\x35\x87\xcc\x97\xf9\x24\x93\x49\x59\x8c\x41\x99\x3b\xc1\x37\x3f\xbf\x8b\x82\xc3\x75\x2c\xcb\xb0\xb6\xd0\x9d\x57\x81\x36\x41\x84\x27\x38\x40\x5b\x98\xc8\x98\xb1\xec\x26\xf8\x07\x81\x58\xcc\xe2\x48\x37\x30\x87\x76\x42\x12\x8d\x32\x2e\x0b\x05\xaa\x48\xee\xd6\xc7\xcb\x80\x24\x6f\xee\xae\xe4\xf2\xea\x68\xfd\xe8\x64\xdc\x51\x37\xe7\x45\x81\xae\x4f\xb4\x85\x11\x28\x2d\xc1\xbf\x7b\xdb\x0f\xd2\xe4\x97\x41\x5e\x84\x72\xe6\xf2\x98\x7a\x43\x74\x9d\xd9\xac\x1c\x8f\xaf\x23\x8b\xe3\x57\x61\xbd\x6f\x7b\x5d\xb4\x6f\x81\x7b\x2a\xda\x9e\x96\xba\xe3\xb2\xff\x7c\xe1\x2a\x6d\x3c\xbe\xbf\xb9\xb5\xff\x7c\xc5\x1a\xdc\x5d\xf8\x10\x3e\xef\xf2\xe2\xae\x8b\x0b\x3f\x08\x30\xa7\x86\xea\x8d\x6a\xfc\xbd\x41\x93\x8e\x45\xc1\xe5\xf2\xcf\xa7\xb4\x38\x15\x4b\x8e\x63\xf4\x60\x1c\x80\x96\xe9\xe3\xf5\x39\x64\xaa\xa4\x7f\xeb\xb5\x37\xd2\xda\x2b\xe1\x01\xc2\xf6\x64\x64\xef\x82\xb1\xf7\x76\xf6\xa1\x36\x0f\xe1\x94\x49\x69\x24\xa4\x1d\x8c\x12\x8d\xc5\x38\x14\x1f\xe0\x5d\xd1\x89\xf8\x4c\x6d\x43\xc3\x7b\x4f\x46\xcf\x53\x7e\x80\xf2\x37\x96\x5e\xb6\x55\xe5\x1d\x21\x10\x11\xc0\xbc\xc6\xad\x5b\x38\x54\x5a\x30\x2e\xb6\xce\x65\xa9\x7a\x8a\xdd\x5b\x42\x81\x13\x70\xfd\xf8\x5c\xa2\xc6\x80\xa0\x74\x69\xb2\x47\xaa\x28\x9f\xe2\x30\x43\x09\xab\x71\x7a\x3e\xa4\xd6\x1f\x07\xe3\xfb\xe4\x27\xb3\x4b\x1d\x14\xc8\x6c\xa3\x11\xce\x25\xca\xc8\x49\xdb\x91\xd2\x2f\x87\x84\x3b\x9a\x08\x5e\x94\xee\x3f\x55\x38\x9a\x1e\x55\x75\xd4\xf1\x84\xed\x19\xf8\xcf\x00\x00\x00\xff\xff\x54\xaa\x36\xde\x75\x22\x00\x00") +var _definitionsOperationsToml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5a\xcd\x92\xdb\x36\x12\xbe\xeb\x29\xba\x94\x83\x2f\x33\xaa\xbc\x80\x0f\xce\x8c\xb7\xd6\x55\xfe\x49\xad\x93\xcd\xc1\x35\x65\x41\x64\x53\xc4\x1a\x04\x18\x00\x94\xa2\x7d\xfa\xad\x46\x83\x24\xf8\x27\xd1\x93\xd9\xbd\x6c\x2e\x2e\x0d\x89\xfe\x41\xf7\xd7\xdd\x1f\x40\x7f\x11\x75\x8d\x3a\x47\xfb\xb4\xc9\xd1\x65\x56\xd6\x5e\x1a\x0d\xaf\x61\x2b\x1d\xf8\x12\x41\x6a\x8f\xb6\x10\x19\x42\x61\x2c\xbc\x09\xab\xc1\xa2\x12\x1e\x73\x30\x35\x5a\x41\x02\x6e\xb7\xdd\x6c\x3a\x5d\x3b\x53\xef\x32\x8b\xc2\xe3\x57\x7e\xf4\xb4\xa9\x85\x15\x95\x83\xd7\xf0\x65\x5b\x0b\x5f\x6e\x9f\x36\x16\x5d\xa3\x3c\x3f\x32\xdb\x89\xf9\xed\x76\x73\x96\x4a\x01\xeb\x01\xa1\x81\x55\x81\x39\xfc\x0b\x33\xbf\xdb\x6c\x7e\xf8\x01\x7e\xc2\x52\x9c\xa4\xb1\x9b\xcd\x3d\x3c\x84\x85\xd1\xc1\xcf\x7f\xff\xf4\xeb\xfb\xc7\x89\xb0\x38\x28\x8c\x0a\xe0\x2c\x7d\x09\xb5\x71\x32\x58\xfc\x11\x84\xce\xc1\xc9\x7f\x23\xfc\xb8\x5b\xd0\xf6\xf1\xd3\x2f\x60\xd1\x37\x56\x93\x46\xb4\xd6\x58\x10\x1c\xa5\xa8\x13\xff\x90\xce\xef\x36\x00\xf7\xf0\x19\xed\x49\x66\xd8\x79\x52\x62\xf6\x2d\xd8\xc8\x51\xa1\xc7\x54\x4a\x16\x2c\xe8\x76\x1b\xda\xf6\x30\x8e\x67\x2b\x93\x30\x8e\x82\x14\x22\x14\xe3\x92\x19\xed\x51\x7b\xf0\x66\x1a\xac\x6d\x1a\x7f\xb3\xbd\x83\xad\xa5\x7f\x68\xbb\xa3\x4c\xe8\xed\xd3\x86\x85\xbe\x56\x26\x47\x32\xc2\xaa\x26\xf9\x35\x55\x25\xfd\x55\xc7\x78\x49\xd8\x74\x21\xb5\x74\x65\xe2\x58\x6d\x4d\x86\xce\x8d\x3d\xbb\x62\xfc\xa0\x4c\xf6\x6d\x2d\x4e\x7f\xa2\xc5\x4b\x30\x8d\x9a\x12\x94\x86\x27\x2f\x00\x52\xd0\x78\x86\xa0\x6c\x1e\xa6\x2d\xae\xd8\xbd\x3f\x03\x2b\x5f\x0a\x0f\xa5\x70\xa0\x85\x97\x27\x04\xd7\xd4\xb5\xb1\x3e\x6c\x7e\x6f\x4e\x68\x03\x6e\xf6\x90\x1b\x74\xfa\x95\x87\x8f\x6f\xdf\x3e\x12\x34\x18\x87\x63\xdd\x0e\x8c\x05\x6d\xe6\x6c\xb4\x0a\x4a\x71\xc2\x5b\xc6\x9e\x83\xf5\x24\x19\x0c\xf5\x98\x8b\x39\x40\x85\x05\x03\xa0\x73\xb0\xaf\xe2\xfb\x0e\xb6\x07\x99\xdf\x86\x79\xd0\x34\x86\x87\xa9\x0e\x52\x5f\xf5\x29\x2e\x61\x47\x1c\xc1\x30\xd4\xdf\x62\xe1\x1d\x64\xee\xd6\x19\x57\xd2\xf9\x6b\x96\xe9\x7d\x6b\xf6\x80\xca\xe8\x23\x85\xc4\x97\xd2\x2d\x58\x1f\x86\xe0\x20\xaf\xb8\x91\x99\x5a\xae\xad\xb5\x07\x53\x5f\x76\xbd\x10\xc7\xad\xbe\x0c\xca\xc9\xd9\x8c\x36\x9f\x3b\x7f\xa5\x88\x4c\x7d\xa1\xd0\x7d\x62\xa4\x18\x0b\x55\xa3\xbc\xac\xfb\x96\x2d\x75\x30\xef\x18\x9f\x33\x23\x80\x34\x18\xad\x2e\xac\xcb\x68\x0c\x28\x0c\x4f\xe8\x8f\xb6\x26\x53\x90\x3f\x7e\xfa\xf8\xea\x97\xae\x3c\x5a\x64\xb3\x2f\xa0\x8d\xbe\xc7\xaa\xf6\x17\xc8\xa5\xc5\xcc\x1b\x7b\x21\xbf\xc2\xdb\x42\x2a\x74\x60\x31\x6b\xac\x93\x27\x54\x17\xd6\xfb\xab\x43\xdb\xa9\x93\x55\xad\xb0\x22\xb0\x5e\x51\x28\x42\xf3\xae\x2f\xa9\x2e\x38\x5c\x68\xab\x95\x43\x55\xb0\xde\x07\x56\x40\x56\x19\xf9\xbd\x82\x58\x76\xb1\x87\xec\xdf\x5a\xcb\x21\xfc\x60\x72\x7c\xa7\x4f\x42\xc9\x7c\xbf\x6b\xc3\x73\xbd\xe9\xe4\xce\x0f\x1b\xc3\x4b\x77\x9d\x89\x81\xff\x7e\xe7\x49\x4c\x26\xdd\xe7\x1e\xde\x80\x6b\x32\x1a\x42\x45\x13\xc1\x67\x6a\x1e\x13\xe0\x4a\xd3\xa8\x1c\x0e\xd4\x6c\x28\x85\x1e\xef\xe0\x5c\xca\xac\x84\x0a\x85\x76\x23\xb5\xaf\x5c\xd7\x93\xc8\x74\x85\x5e\xe4\xc2\x8b\x44\x4b\x40\xad\xa8\x90\x42\xec\x6c\xd6\x01\x91\x5b\x20\x65\x72\x65\xad\x3d\xb6\x49\xdf\x75\x82\xc9\x18\xcb\xe5\x54\xcd\x74\x3e\xe5\xd2\xce\x36\x88\x85\x91\xb7\xf9\x52\xa0\xcf\xca\xb5\x1e\xfe\x8d\x16\x07\xef\xa2\x18\xf9\x17\x7e\x4e\xe7\xeb\x1d\x6c\x1b\xab\x96\x3b\x42\x10\x83\xc2\x9a\x0a\x04\x1c\xe5\x09\x35\x34\x56\x11\xa0\x48\x7c\x5a\xff\xc1\xf6\x77\x8e\xd5\x29\x14\xd8\x6a\xc7\x19\x56\x81\xe1\x39\x40\xb0\xf8\x7b\x23\xad\xd4\x47\xde\x21\xbd\x6a\xac\x6a\x41\x51\x11\xba\xd7\x85\xfc\x83\x39\xe1\xae\x93\xa1\x78\xd3\x8f\xef\xee\xbf\x24\xd4\x8f\xae\x9b\xcd\x96\xac\x72\x6b\xad\xf8\xd7\xb3\x9b\x2d\x1b\x9e\xeb\x8d\x57\x5b\xea\xb2\xd8\xb4\x7b\x7e\xe0\xb5\x7f\xa6\x7b\x06\x15\x7f\x75\xcf\xd9\x92\x61\x04\x74\x15\x13\xf5\xfd\x8f\xda\x27\xb3\x04\x61\xfd\xea\x7a\x69\x05\x96\x0e\x08\x89\xc6\xa4\xbb\x76\x4f\x5f\xea\xa0\xd0\x29\x5c\x3a\xcc\xf6\x8e\x7e\x77\x4f\x9b\x84\xa6\x27\xd8\xc9\x3e\x56\x92\xec\xde\xd1\x1b\x44\x5b\xea\x1c\xff\x98\x50\xed\x3b\xd8\x92\xf0\x94\x6e\x86\xa7\x33\xf1\x8e\xa0\xb9\xe5\x69\xbb\x2e\xf5\x10\x9a\x5a\x19\x91\x47\x52\xa5\x9d\xb7\x4d\xe6\x7b\x56\x39\xb3\x01\x92\x9a\x61\xe4\x0b\xbe\x05\x52\x7e\xc3\xaf\x40\xcc\x83\xda\x31\x2f\x5f\x0c\xe4\x30\x64\xf5\x0c\x35\x6f\xfd\xa9\xc5\x71\x2d\xce\x7f\x16\x47\x9c\x81\x78\x2c\xc5\xb6\x19\x58\xa1\x73\x53\x71\xda\x77\x9d\x85\x04\xf7\xf4\xf7\x4b\x41\x9e\x74\xdd\xb8\xc1\x09\x5e\x3f\x13\xef\x9d\xeb\x8c\x74\xf6\x7c\x15\xc8\x5d\x8d\x99\x2c\x64\x06\xa6\x28\x1c\xde\x04\x3a\xaf\xba\x7d\xa8\x24\x0f\xc8\x31\x8b\x62\x3d\x85\xfa\x07\x2d\xde\x25\x62\xb4\xa3\xf0\x73\x7e\x33\xb5\x35\x27\x99\x53\x88\xcf\xe2\xd2\x76\xda\x4c\x68\x08\x32\x49\xb4\x6e\xf2\x3d\x66\x63\x9b\x2f\x71\xe8\x4f\xfd\x25\xad\x95\x90\xda\x0b\xa9\x93\xa2\x73\xde\x58\x4a\x5b\x94\xe3\x2e\xda\x2a\xe9\xa1\xb4\x82\x9c\x46\x4d\x16\xa4\x76\x5e\xe8\x0c\x87\x3e\x6b\x51\x8d\x6f\xac\x48\x02\x07\x5e\x93\x41\x9e\x60\xf3\x06\xe3\x74\x13\x2b\x8d\x0d\x15\x1f\x71\xa1\xea\x8f\xe8\x41\x40\xe0\x0b\x53\xc5\x21\xaf\x2d\x95\x7a\xde\x8e\xa8\xab\x5c\xe9\x37\x42\xa9\xa9\x59\x07\x8d\xce\xd1\x72\xf3\xe9\xcd\x0f\x8d\x49\x36\x15\x65\xd7\x41\x74\x94\x70\xce\x77\xd4\x90\x86\x7f\x0a\xb7\x5a\x48\x1b\xab\xaa\x2f\x95\xe5\xee\xd1\xe6\xaa\xa3\xa5\x81\x2b\x2f\x92\xd2\x47\x5e\x1e\x48\x68\xde\xfe\x7e\x36\x31\xb5\xc8\x1c\x53\xa9\xab\x44\x94\x97\x7d\xa5\x0c\x0c\x88\x67\xe7\x8e\x74\x20\x73\xac\x6a\x43\xdd\x26\x1a\xee\xc9\x53\xbb\x45\x75\x16\x17\xd7\xb6\x3b\x2d\x15\xf7\x3b\x5e\x1e\x15\xc5\xb6\xa8\xf1\x84\xb6\x63\xac\x3c\xd9\x3e\x1a\xff\x96\x7a\xe1\x3e\x5d\x3f\xdc\xd6\xfc\xdd\x5f\x47\x21\xb9\x85\xa6\x59\x6c\xa9\xd8\x3c\xec\xa2\xfd\xac\xb1\x96\xa2\xd0\x81\xaf\x95\x1a\x01\x8d\x1e\x6f\x9f\x36\xca\x64\x42\xc1\x6b\xf0\xb6\xc1\x91\x39\x46\xf8\x35\xc8\xf0\xf4\x65\xc0\x0c\xc6\x8f\x5c\x46\x50\x74\x93\x8b\xa4\xef\xf3\xf3\x27\xc8\xd1\xad\x7d\x0b\x84\x1c\x0b\xd1\x28\x0f\xfb\xf7\xd2\x85\x83\x41\x38\x11\x8c\x16\xf7\x80\xe8\x96\x3d\x4a\xbb\x0f\x1f\x1a\x4c\xe3\x43\xe0\x39\x05\x81\x7f\xff\x53\x5a\xdf\x08\x45\x4b\x52\x65\xc3\x94\xed\x3f\x7b\xe1\xf7\xd4\xd2\x15\x95\x20\x6b\xde\xcf\xe5\xca\xa2\x58\xb8\x86\xa7\x37\xc1\x38\x9d\x7e\x5e\x39\x88\xb9\x99\x39\x8c\x9f\x07\xc1\x1e\xcd\x3a\xa2\x77\xe6\x6b\x26\x94\x3a\x88\xec\xdb\xcc\xe8\x1b\xfa\xd3\x76\xfc\xdb\xbc\x61\xa9\x23\x0c\x90\xb2\x86\x5c\x24\x1f\x76\x28\xde\x42\x5f\x40\xd4\x12\xb2\x50\xbf\xf3\x64\x23\x25\x1a\x0e\x75\x1e\x84\xde\xfc\xfc\x2e\x0a\x8d\x97\x89\x2c\xc3\xda\x43\x7f\x40\x04\x72\x9e\x28\x49\xb4\x4d\xae\xcf\x65\xc7\x79\x71\x03\xda\xc3\xbd\xaf\xe4\x56\xa4\x16\x44\xc0\x32\xa1\x85\x46\x90\xd4\x85\x01\x53\x24\x77\xd0\x53\x90\x93\xd4\xcd\x1d\x95\x52\x8f\x0f\xb0\x0f\x41\x24\x9c\x28\x73\x59\x14\x18\xea\xbe\x83\x7d\x64\x97\x04\xee\xfe\xed\x20\x2e\x8b\xdf\xc5\x64\x11\xcb\x54\xea\x63\xea\x0b\x51\x66\xe1\xb3\x72\x26\xa2\x81\xc1\xcd\x5e\x29\xa5\x9f\xb6\xfa\xf8\x5e\xc7\xee\x42\x7c\x99\x26\x86\xd3\x28\x5f\xec\x87\x1a\x9a\x46\xf4\xb7\xb0\xee\xff\xfc\x7b\xce\xe8\x4e\x80\x63\xf7\x7d\x97\x02\xcf\xba\x10\xe0\x8e\x8e\x39\xf5\x47\x36\x6a\xf1\xf7\x06\x5d\x37\xd2\x94\xd4\xab\x3f\x1c\xd2\xda\x5e\x26\x39\x05\xd1\x83\x59\xb8\x79\x61\x8f\x93\xa3\xc0\x7c\xcd\xfe\x36\x68\x59\xa4\x31\xa9\xd1\x01\xa0\xf6\xa4\x7d\x1f\xb6\xbf\x67\x03\xfb\x58\x7d\x87\x78\xa4\xa3\xbc\x11\xb0\x0e\xce\xa8\xc6\x63\x9c\x67\xf7\xf0\xae\xe8\x25\x38\x33\x77\xb1\x89\xbd\x27\x7b\xe7\x25\x17\xc0\xf0\x7d\x1f\xcb\xb6\x9a\xd8\x0d\xc2\x0c\xc1\x89\x15\xde\x85\x75\x63\x9d\x85\x90\xea\x2e\x38\xac\xcd\x40\x6f\x78\x4b\x59\x0f\x02\xa1\xc3\x9e\x4b\xb4\xc8\x80\x49\x57\x26\x1b\xa4\xea\xe1\x8c\xc6\x09\x48\xc8\x8c\xb3\xef\x3e\xb5\xfd\x30\x1a\xbd\x27\x9e\xaa\x21\x5d\x50\xa0\xf0\x8d\x45\x38\x97\xa8\x5b\xce\xd8\x8d\x87\x21\xf6\x7b\x82\xe7\x5a\xa4\xa2\x0e\xff\x5d\x20\x70\xe7\x56\x53\xcf\xef\x4e\x18\x4f\x9d\xff\x09\x00\x00\xff\xff\x28\x6c\xc2\x39\x42\x21\x00\x00") func definitionsOperationsTomlBytes() ([]byte, error) { return bindataRead( @@ -178,11 +178,11 @@ func definitionsOperationsToml() (*asset, error) { } info := bindataFileInfo{name: "definitions/operations.toml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6b, 0x82, 0x14, 0x9b, 0x30, 0x6c, 0x35, 0x25, 0x82, 0x50, 0xd4, 0x23, 0x64, 0xb, 0x86, 0xec, 0x7c, 0x9b, 0xff, 0x1d, 0x8a, 0xe9, 0xd5, 0x87, 0x78, 0xdf, 0xa2, 0xa8, 0x4, 0x3, 0x25, 0xab}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1c, 0xb3, 0x62, 0x71, 0x1d, 0x65, 0x9d, 0x49, 0x40, 0x6f, 0xfe, 0xb, 0x34, 0x3, 0xb6, 0x12, 0x25, 0x5b, 0xc1, 0xff, 0xfc, 0x31, 0x57, 0x44, 0xa, 0x5b, 0xea, 0x6b, 0x60, 0xdd, 0xca, 0xc7}} return a, nil } -var _definitionsPairsToml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x54\xc1\x6e\xd4\x30\x10\xbd\x47\xca\x3f\x8c\xf6\x04\x52\xb5\xbd\x00\x37\x6e\x08\x09\x89\x8a\x03\x70\xaa\xaa\x95\x13\x8f\x9b\x61\x1d\x4f\x18\x4f\x36\x84\xaf\x47\xb6\xb3\xdd\xa8\x74\x97\x96\x5b\x64\xbf\x79\xef\xcd\x9b\x71\x6e\x5b\x0e\x8a\x41\x77\xbd\x7d\x7b\x57\x57\x3a\x0f\x08\xef\x61\x13\x55\x28\xdc\x6f\xea\xaa\xae\x1e\x10\xe9\xee\x02\x84\xc2\x68\x94\x38\xec\x94\xf7\x18\x9e\x02\x5a\x8c\xad\xd0\x90\x40\xf9\x7c\xc0\x96\xdc\x0c\xda\x21\xac\x09\x20\x13\x80\x63\x01\x4f\x51\x17\x05\x41\x8b\x41\xc9\xf8\x17\x30\x77\x3c\x81\x32\x0c\xc2\x07\xb2\x08\x27\x8e\x4c\x1e\x51\x0e\xd4\x22\xa4\x4f\x65\x31\xf7\x58\xa4\x30\xd8\x81\x29\xe8\xff\x0b\x1d\x19\x2e\xcb\xfc\x1a\x48\xd6\x81\x2a\xf5\xb8\xfd\x30\x4a\x0e\xe1\xbc\xd6\xd4\x61\xc8\x99\x8d\xe2\x41\x50\x47\x09\x68\xa1\x99\x41\xd0\xb4\x1d\x4c\xe4\x3d\x14\xee\xa2\x43\x41\x51\x5a\x1c\x94\x65\x25\xf6\xe9\x74\x5a\x60\x29\xea\x5d\xcf\x76\xed\xe8\x33\x45\xbd\x61\xbb\x10\x79\x6e\xb3\xb5\x17\x8e\xf6\x58\x76\x31\x8c\x60\xfa\x27\x77\xeb\x02\xef\x52\x0f\xa9\xb4\x90\x70\xf3\x03\xdb\xbf\x9a\xf8\x92\x4f\x97\x36\x1e\xf1\x9d\xee\xa0\xa3\xb0\xac\x1a\x3b\x17\x71\x3d\x7d\x0a\xfa\xee\xcd\x79\x33\x05\x9f\xdb\xd3\x8e\x22\x08\xfe\x1c\x31\xea\xd5\x83\xc3\x3c\x92\x88\xb8\x4f\x3b\x92\x21\x4b\x49\x83\x8e\x05\xd3\xe0\x6c\x91\xee\x47\xaf\x34\x18\xd1\x1d\xd9\x33\x4f\x8d\x78\xd7\x1a\xef\x1b\xd3\xee\x57\x08\x37\x86\xf6\xd5\xed\x5d\x33\x2b\xbe\xbe\xb4\x3a\x46\x41\xd9\x32\xe0\x01\x65\x86\xb4\x71\x30\x15\x03\x60\x8d\x1a\x70\xc2\x3d\x44\x1e\xa5\x5d\x32\x8d\xf4\x1b\x9f\x1f\x45\x42\xff\x2b\x08\x0e\x7e\x2e\x8a\x9e\x7a\x52\xb4\xb0\xfc\x60\xb2\x83\xa2\x3a\xb1\xec\x77\x96\xe4\x19\x2b\xb1\xd9\xd4\xd5\x7a\x2d\x52\x29\x58\x92\x33\xeb\x76\xb5\xb4\xce\x03\x96\x87\x56\x4c\x35\x29\x04\x6f\x94\x0e\xf8\x30\x24\x4b\xb2\xad\xab\xa3\x15\xb8\xf9\xfe\xf5\x1b\x44\x35\xa2\x30\x91\x76\x70\x9d\x15\x0a\xdb\xb1\xc1\x45\x2f\xae\xeb\x8e\xfc\x16\x9d\x19\x7d\xca\x1f\xae\x81\x1c\x04\x56\x88\xa8\xdb\xba\xfa\xc8\x02\x2e\x3e\x26\x81\xec\x2d\x58\x9e\x22\x0c\xde\xa8\x63\xe9\xaf\x72\x8b\x0d\x76\xe6\x40\x2c\x40\x11\xc6\x60\xd1\x51\x40\xbb\xad\xab\x9c\xc5\x9f\x00\x00\x00\xff\xff\xc5\x44\x9b\x80\xd1\x05\x00\x00") +var _definitionsPairsToml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x54\xcd\x8e\xd3\x40\x0c\xbe\xe7\x29\xac\x9e\x40\x5a\x75\x2f\xc0\x8d\x1b\x42\x42\x62\xc5\x01\x38\xad\x56\xd1\x64\xc6\xb3\x31\x9d\x8c\x83\xc7\x69\x08\x4f\x8f\x66\xd2\x36\x51\xd9\x76\x17\x6e\xd5\xd8\xdf\x9f\xed\xf4\xde\x72\x54\x8c\x5a\x77\xee\xed\x43\xa5\x53\x8f\xf0\x1e\x36\x49\x85\xe2\xe3\xa6\xaa\x4e\xe5\x5c\xb9\x54\xa7\x38\x18\x25\x8e\xb5\xf2\x0e\xe3\xdf\x5d\x0e\x93\x15\xea\x73\x4b\x79\xee\xd1\x92\x9f\x40\x5b\x84\x35\x1c\x0a\x1c\x3c\x0b\x04\x4a\x5a\xd8\x05\x1d\x46\x25\x13\x5e\xcc\xda\xf2\x08\xca\xd0\x0b\xef\xc9\x21\x2c\x0c\x85\x38\xa1\xec\xc9\x22\xe4\x9f\xca\x62\x1e\x31\xcb\x60\x74\x3d\x53\xd4\xff\x15\x39\xe2\xaf\x49\xfc\xea\x49\x56\x13\x54\xea\x70\xfb\x61\x90\x92\xfc\xa2\xce\xd8\x62\x2c\x73\x1a\x24\x80\xa0\x0e\x12\xd1\x41\x33\x81\xa0\xb1\x2d\x8c\x14\x02\xcc\xcc\x59\x83\xa2\xa2\x58\xec\x95\x65\x11\xfa\xb4\x3c\xe6\x9e\x3c\xd9\xba\x63\xb7\xb2\xf2\x99\x92\xde\xb1\x2b\x14\x81\x6d\x71\xf4\x4f\x4b\x3c\x82\xae\xc4\x8f\xa6\x7b\xe2\x7c\xae\x70\x1e\xb0\x90\x81\x99\x80\x9b\x1f\x68\xcf\x9d\x7f\x29\x8f\xb3\xf7\x33\xae\xa5\x04\x2d\xc5\x72\x4c\xec\x7d\xc2\xd5\x8e\x29\xea\xbb\x37\x17\x4d\xcc\xdd\x25\x92\xb6\x94\x40\xf0\xe7\x80\x49\x6f\x4e\xce\xca\xf0\x13\xe2\x2e\x5f\x42\x69\x39\x40\x1a\xf4\x2c\x98\x57\xe4\xb2\x6c\x37\x04\xa5\xde\x88\xd6\xe4\x9e\xfa\x82\x88\x6b\x6b\x42\x68\x8c\xdd\x2d\x65\x3f\x44\xfb\xea\xfe\xa1\x99\x14\x5f\x5f\xb9\x0e\xa3\xa0\xec\x18\x70\x8f\x32\x41\xbe\x29\x18\x67\x65\x70\x46\x0d\x78\xe1\x0e\x12\x0f\x62\xcb\x10\x13\xfd\xc6\x97\xe6\xcf\xbd\xcf\xa5\xe7\x18\xa6\x59\x2d\x50\x47\x8a\x0e\x0e\x7f\x17\x45\x3d\x2b\x8e\x2c\xbb\xda\x91\x3c\xbb\xfb\xcd\xa6\x5a\xaf\x3f\xe3\xc0\x91\x5c\x38\xa9\x9b\x43\x62\xee\x71\xfe\x82\x66\x3f\x4d\xce\x1e\x8c\xd2\x1e\x4f\x4b\x71\x24\xdb\xea\x68\x03\xee\xbe\x7f\xfd\x06\x49\x8d\x28\x8c\xa4\x2d\xdc\x16\x81\x99\xec\x18\xed\x20\x97\x56\xb0\x23\xbb\x43\x6f\x86\x90\x87\x0e\xb7\x40\x1e\x22\x2b\x24\xd4\x6d\xf5\x91\x05\x7c\x3a\xa7\x80\x62\x2c\x3a\x1e\x13\xf4\xc1\xa8\x67\xe9\x6e\x4a\xbe\x06\x5b\xb3\x27\x16\xa0\x04\x43\x74\xe8\x29\xa2\xdb\x56\x79\x0c\x7f\x02\x00\x00\xff\xff\x18\xb1\x37\x3d\x92\x05\x00\x00") func definitionsPairsTomlBytes() ([]byte, error) { return bindataRead( @@ -198,11 +198,11 @@ func definitionsPairsToml() (*asset, error) { } info := bindataFileInfo{name: "definitions/pairs.toml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8, 0x42, 0x1c, 0x7c, 0xe, 0xb0, 0xf2, 0x85, 0xe3, 0xb3, 0x68, 0x7f, 0xe8, 0xd1, 0x17, 0x21, 0x7e, 0x1c, 0x1f, 0x34, 0x26, 0x4c, 0xaa, 0xf9, 0x28, 0xad, 0x8a, 0x21, 0x70, 0x87, 0x7b, 0x2c}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xab, 0x0, 0x28, 0x68, 0x7d, 0x4b, 0x29, 0xb9, 0x56, 0x9b, 0x8c, 0x71, 0x7a, 0xb4, 0x5c, 0x96, 0x6f, 0x82, 0x16, 0x0, 0xaf, 0x8e, 0xa7, 0x2f, 0x32, 0x36, 0x13, 0x78, 0xa, 0x6e, 0x2f, 0x90}} return a, nil } -var _cmdDefinitionsTmplFunctionTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x91\x41\x4b\x03\x31\x10\x85\xef\x85\xfe\x87\x47\xc9\x61\x2b\x6d\x7e\x80\xe0\x69\x51\x10\x8a\x14\xf5\x2e\x21\x9d\xad\xc1\xcd\x64\xd9\xcc\xae\x85\x98\xff\x2e\xe9\x16\x17\x11\x0f\xde\x3c\x25\xcc\xcc\x7b\xf3\x3e\x26\xa5\x2d\x7a\xc3\x47\x82\x7a\xd9\x40\x8d\xb8\xbe\x81\xd2\x77\x03\xdb\x88\x9c\x97\x8b\xd2\x77\x0d\x38\x08\xd4\xa8\xef\x7d\xd7\x92\x27\x16\x3a\x7c\x75\x55\xc3\x6f\x67\xd5\xa8\x1f\x8c\x27\x7c\x40\x42\x6d\x3c\xb5\x97\x89\x22\x57\xa3\xde\x05\x6b\xa6\x52\x33\xb0\x45\x15\x71\x95\x12\xd4\xac\xd9\x9b\x38\x4d\xac\x91\x52\x31\xcd\xb9\x4a\x49\x8d\x7a\x6f\x7a\xe3\xa3\x7e\xee\x9d\xdf\x99\x28\xfa\x49\x7a\xc7\xc7\x5b\x3e\xc4\x77\x27\xaf\x75\xf0\xde\xe4\x8c\xd0\x09\x3a\xe3\xfa\x5f\x4c\x4b\xb9\x04\xfd\xbe\x69\x5a\xf0\x48\x71\x68\x25\x5e\x8c\xcf\x01\x96\x0b\x00\xe8\x0c\x3b\x5b\xad\x0a\xbc\x9b\xc9\x57\xeb\xe5\x62\x22\xa3\x36\xd2\x5f\x91\xac\x9c\x60\x03\x0b\x9d\x44\xd7\xd3\xbb\xc1\xff\xe6\xdc\x82\x78\xbe\xf7\xcf\xff\x67\x00\x00\x00\xff\xff\xbd\xbf\x8d\x4f\x44\x02\x00\x00") +var _cmdDefinitionsTmplFunctionTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x91\x41\x4b\xc4\x30\x10\x85\xef\xfd\x15\x8f\x25\x87\xae\xec\xe6\x07\x08\x9e\x8a\x82\xb0\xc8\xa2\xde\x25\x64\xa7\x6b\xb0\x99\x94\x66\x5a\x17\x62\xfe\xbb\xa4\x55\x17\x11\x0f\xde\x3c\x25\xcc\xcc\x7b\xf3\x3e\x26\xa5\x2d\x06\xc3\x47\x82\x7a\xda\x40\x4d\xb8\xbc\x82\xd2\x37\x23\xdb\x88\x9c\xab\xd2\x76\x2d\x38\x08\xd4\xa4\x6f\x7d\xdf\x91\x27\x16\x3a\x7c\x36\x55\xcb\x2f\xb3\x66\xd2\x77\xc6\x13\xde\x20\xa1\x31\x9e\xba\x65\xa0\x88\xd5\xa4\x77\xc1\x9a\xb9\xd2\x8e\x6c\x51\x47\x5c\xa4\x04\x75\x56\xec\x4d\x5c\x06\xd6\x48\xa9\x58\xe6\x5c\xa7\xa4\x26\xbd\x37\x83\xf1\x51\x3f\x0e\xce\xef\x4c\x14\xfd\x20\x83\xe3\xe3\x35\x1f\xe2\xab\x93\xe7\x26\x78\x6f\x72\x46\xe8\x05\xbd\x71\xc3\x2f\xa6\xa5\x5c\x62\x7e\xdf\xb4\x2c\xb8\xa7\x38\x76\x12\x3f\x8c\xe7\x00\x15\x00\xf4\x86\x9d\xad\x57\x05\xdc\x9d\xa9\x57\xeb\x6a\xa6\xa2\x2e\xd2\x1f\x71\xac\x9c\x60\x03\x0b\x9d\x44\x37\xcb\xbb\xc1\x3f\x66\xdc\x82\xf8\xeb\xca\x3f\xbe\xef\x01\x00\x00\xff\xff\x41\xc8\xae\xbf\x37\x02\x00\x00") func cmdDefinitionsTmplFunctionTmplBytes() ([]byte, error) { return bindataRead( @@ -218,11 +218,11 @@ func cmdDefinitionsTmplFunctionTmpl() (*asset, error) { } info := bindataFileInfo{name: "cmd/definitions/tmpl/function.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd0, 0x20, 0xb3, 0x8f, 0x25, 0x53, 0xc9, 0x9c, 0x42, 0x17, 0x97, 0x60, 0x14, 0xbc, 0x79, 0xdb, 0x33, 0x71, 0xd7, 0xe, 0x80, 0xb5, 0x2d, 0x13, 0xa8, 0xb1, 0x44, 0x7a, 0x5d, 0xda, 0xcb, 0x97}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc1, 0xfc, 0xb, 0xf4, 0xfb, 0xf, 0x94, 0xca, 0x64, 0x7a, 0xb8, 0x48, 0xf9, 0x69, 0xf1, 0x88, 0x46, 0x59, 0xd3, 0xbc, 0x0, 0x4e, 0xe7, 0x8, 0x1e, 0xdf, 0x27, 0x59, 0x81, 0x75, 0x52, 0xa2}} return a, nil } -var _cmdDefinitionsTmplInfoTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x94\x4d\x6b\xdb\x4e\x10\xc6\xef\x02\x7d\x87\xe7\x6f\xcc\x1f\xab\x38\x56\x02\xa5\x87\x36\x3a\x25\x69\x09\x25\x49\x21\xa1\x97\x52\xca\x4a\x1a\x99\xad\xb5\xbb\x62\x77\x25\xe2\x2a\xfa\xee\x65\xf5\xe2\x58\x6e\x9c\xd4\xed\xa9\xb7\x7d\x19\x3d\xf3\x9b\x67\x67\x14\x86\x38\x53\x29\x61\x49\x92\x34\xb3\x94\x22\x5e\x63\xa9\x36\x7b\x24\x22\x0d\x53\xca\xb8\xe4\x96\x2b\x69\xde\xe1\xfc\x06\xd7\x37\x77\xb8\x38\xbf\xbc\x5b\xf8\x5e\xc1\x92\x15\x5b\x12\xec\xba\x20\xe3\x7b\xbe\xc7\x45\xa1\xb4\xc5\xcc\xf7\x00\x60\x92\x09\x3b\xf1\xbd\xc0\xdd\xd4\xf5\x11\x34\x93\x4b\xc2\x74\x35\xc7\x94\xcb\x4c\x19\xbc\x8d\xb0\xb8\x74\xab\x2b\x56\xa0\x69\x5c\x14\xa6\x86\x74\xc5\x13\xba\x66\x82\x5c\xc0\x74\x85\x07\x58\x75\xc6\x04\xe5\x6d\x8c\xef\x85\x21\xde\x73\xca\x53\x70\x99\xd2\x3d\xb8\x44\x5d\x6f\x7f\xd6\x34\x88\xb9\xf5\xbd\x44\x49\xd3\xc2\xec\x24\xaf\x5a\xdd\x0e\xc1\x29\x3a\xd6\x5d\x85\x4b\x27\xed\x70\xaa\x45\x4b\xe2\x18\x3e\x31\x93\x30\x07\x81\x08\x27\xa7\xa7\xee\x76\xd5\x63\x1f\x81\x64\xda\xae\xdb\x6a\x9d\x21\xd8\x2d\x66\x2c\x61\xac\x2e\x13\x8b\x7a\x48\xbf\x21\xfc\xb6\x97\xd0\xc1\xdc\xad\x8b\x4e\xad\x69\xb6\x4e\xb6\x82\x1e\x49\xba\x93\x30\x74\x66\xa0\x34\x94\x82\x19\x30\xb7\x13\xac\x40\xa6\x34\x54\xfc\x9d\x12\x8b\x8a\xe5\x25\xcd\x71\x0c\x41\x4c\x1a\x48\x65\x61\xc8\xce\x71\xd2\x1f\x18\xb2\x9d\x56\x2b\xc4\xa5\x7d\xf3\xba\xdb\x0b\x08\x56\x7c\x31\x56\x73\xb9\xfc\xca\xa5\x25\x9d\xb1\x84\xea\xc6\xf7\x36\xe9\x5f\xb0\xde\x5d\xf3\xcc\x95\x71\x71\xdf\xb6\x8e\x3b\xcc\x4a\x99\x60\x26\xf0\xea\x59\x07\x03\x7c\x20\xdb\x59\x70\xce\x4d\x91\xb3\x75\xef\xcb\x2c\x18\x3b\x33\x78\xac\xc9\x96\x5a\x42\x2c\x7e\x71\xb2\xe7\xfd\xdd\xbc\xb7\x7b\xf2\x56\xe3\xbc\xc1\x0b\x42\x03\xd7\x13\x40\x88\x50\x8d\xa1\x5b\xc4\xf6\x75\x73\x43\xfd\xf3\xfe\xbd\x4f\xb3\x11\xf0\x1c\xb1\x52\x79\x30\x70\xf1\x0c\x62\xe1\x9e\xfc\xff\x03\xa7\xe3\xbf\x08\xc7\x83\xc8\xf3\xc6\xcf\x61\x75\x49\x5d\x64\x33\x2a\x78\x0b\xec\x01\x3f\x48\xab\xcf\xae\x49\xdb\x4f\x32\x96\x1b\x3a\xf0\xc9\xae\x4a\x63\x0f\x6c\x97\x3f\x2e\x3f\xda\x29\xbf\x60\x92\x27\xb3\x4c\xd8\xc5\x6d\xa1\xb9\xb4\xd9\x6c\xf2\x14\xed\x47\x8a\x59\xfc\x38\xd6\x43\x27\xf0\xcd\x40\x4e\x82\xe0\x29\xa7\xfe\xad\x7e\xee\x2c\x7d\x88\x0e\xf3\x74\xdf\x2c\xf4\x7f\xba\xdd\x3f\xdf\xe3\xfa\x67\x00\x00\x00\xff\xff\xe0\x43\xd5\x19\xe2\x06\x00\x00") +var _cmdDefinitionsTmplInfoTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x94\x5f\x6f\xd3\x30\x14\xc5\xdf\xfd\x29\x0e\x55\x85\x1a\xd4\x35\x9b\x84\x78\x80\xe5\x69\x1b\x68\x42\xdb\x90\x36\xf1\x82\x10\x72\x92\x9b\xca\x34\xb6\x23\xdb\x89\x56\x32\x7f\x77\xe4\x24\x74\x4d\xf7\x07\x8a\x78\xe1\xcd\x37\xf6\xbd\xe7\x77\x8f\xaf\x13\xc7\x38\xd1\x39\x61\x49\x8a\x0c\x77\x94\x23\x5d\x63\xa9\x37\x31\x32\x99\xc7\x39\x15\x42\x09\x27\xb4\xb2\xef\x70\x7a\x85\xcb\xab\x1b\x9c\x9d\x9e\xdf\x2c\x58\xc5\xb3\x15\x5f\x12\xdc\xba\x22\xcb\x98\x90\x95\x36\x0e\x33\x06\x00\x93\x42\xba\x09\x8b\x18\x6b\xdb\x03\x18\xae\x96\x84\xe9\x6a\x8e\xa9\x50\x85\xb6\x78\x9b\x60\x71\x1e\x56\x17\xbc\x82\xf7\xac\x6d\x31\xb5\x64\x1a\x91\xd1\x25\x97\x14\xf6\xa7\x2b\xdc\xc1\xe9\x13\x2e\xa9\x0c\x47\x58\x1c\xe3\xbd\xa0\x32\x87\x50\x39\xdd\x42\x28\xb4\xed\x76\x92\xf7\x48\x85\x63\x99\x56\x36\x40\xec\xe8\x36\x5d\xcd\x5e\xdd\xfb\x0e\x71\x37\xfd\x3c\xd4\x0d\x24\xcd\xa2\x83\x08\xf2\x9f\xb8\xcd\x78\xd0\x47\x82\xa3\xe3\xe3\xb0\xbb\xea\x81\x0f\x40\x2a\x0f\xcb\x88\xb1\x60\x00\x76\x7b\x18\xa7\x5b\x67\xea\xcc\xa1\x1d\x94\x37\x6c\xdf\x9e\x62\x0b\x18\x37\xeb\xaa\xaf\xe5\xfd\xd6\x97\xfb\x33\x1b\x86\x2e\x8e\xe3\x60\x00\x6a\x4b\x39\xb8\x05\x0f\x91\xe4\x15\x0a\x6d\xa0\xd3\xef\x94\x39\x34\xbc\xac\x69\x8e\x43\x48\xe2\xca\x42\x69\x07\x4b\x6e\x8e\xa3\xe1\x83\x25\xd7\x95\xea\xea\x08\xe5\xde\xbc\xee\x42\x09\xc9\xab\x2f\xd6\x19\xa1\x96\x5f\x85\x72\x64\x0a\x9e\x51\xeb\xd9\xa0\xfc\xbc\xd7\x61\x57\x14\x81\xfe\xec\xb6\x9b\x10\xef\x59\x51\xab\x0c\x33\x89\x57\xcf\xba\x16\xe1\x03\xb9\xbe\xf1\x53\x61\xab\x92\xaf\x07\x37\x66\xd1\xd8\x8f\xc1\x57\x43\xae\x36\x0a\x72\xf1\xc0\xbe\x40\xfa\xa7\x9a\xd7\x4f\x68\x36\x63\xcd\xe8\x37\x85\x06\xa6\x47\x60\x90\xa0\x19\xf1\xb2\x61\xa0\x4a\xdb\xb1\xfe\x03\x77\x66\x23\xd4\x39\x52\xad\xcb\x68\x20\x12\x05\xe4\x22\xdc\xf0\xcb\x3d\x9f\xc0\x8b\x04\x87\x43\x8d\xe7\xdd\x9e\xc3\x99\x9a\xba\x83\x7e\xbb\xd1\x2d\xa8\x3b\xfc\x20\xa3\x3f\x87\x79\xec\x12\x0a\x5e\x5a\xda\xe7\x96\x2e\x6a\xeb\xf6\x9b\x8e\xbf\xee\x3b\x19\xf7\x5d\x71\x25\xb2\x59\x21\xdd\xe2\xba\x32\x42\xb9\x62\x36\x79\x8c\xf5\x23\xa5\x3c\xbd\x7f\xb9\xbf\xee\x5e\x6c\x9e\xdd\x24\x8a\x1e\x5a\xf4\xdf\xcc\x6e\x6f\xe5\x5d\xb2\x9f\x97\x8f\x8e\x7d\xff\x0f\xdb\xf9\xa5\xdd\x2f\x7f\x06\x00\x00\xff\xff\x26\xf5\xd0\xb3\xa6\x06\x00\x00") func cmdDefinitionsTmplInfoTmplBytes() ([]byte, error) { return bindataRead( @@ -238,11 +238,11 @@ func cmdDefinitionsTmplInfoTmpl() (*asset, error) { } info := bindataFileInfo{name: "cmd/definitions/tmpl/info.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x0, 0xb6, 0xea, 0x83, 0xa7, 0x96, 0xc5, 0x75, 0x6b, 0x6e, 0xd2, 0xd2, 0x31, 0xd0, 0x93, 0x4a, 0x22, 0x7a, 0x98, 0x6b, 0x10, 0x8d, 0x5e, 0x37, 0xbf, 0x29, 0x78, 0x5d, 0xb4, 0xcf, 0x95, 0xf9}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa6, 0x9d, 0xdc, 0x29, 0x17, 0xc8, 0x8a, 0x14, 0x25, 0x13, 0xa5, 0x85, 0x13, 0x6, 0xf, 0xb3, 0x4a, 0x21, 0xd1, 0x20, 0x4e, 0x6f, 0x92, 0x60, 0xe2, 0x6e, 0x29, 0x96, 0x4a, 0xee, 0x99, 0x66}} return a, nil } -var _cmdDefinitionsTmplObjectTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x56\x4d\x6f\x23\x45\x10\x3d\x67\xa4\xf9\x0f\x8f\x68\x05\x36\x72\xdc\xbb\x80\x38\x84\xf5\x01\x6d\x02\x44\x22\xc9\x4a\x09\x9c\xd3\xee\xa9\xb1\x9b\xf4\x74\x0f\xdd\x35\x5e\x7b\x9d\xf9\xef\xa8\xe7\x63\x6d\x27\xf6\xca\x80\xe0\xe4\xfe\xa8\x7a\x55\xf5\xea\x55\x7b\x84\xc0\x3b\x97\x11\x66\x64\xc9\x4b\xa6\x0c\xd3\x15\x66\xee\xd3\x1e\xaa\xc8\x44\x46\xb9\xb6\x9a\xb5\xb3\xe1\x07\x5c\xdc\xe2\xe6\xf6\x1e\x97\x17\x57\xf7\xe3\x34\x29\xa5\x7a\x94\x33\x02\xaf\x4a\x0a\x69\x92\x26\xba\x28\x9d\x67\x0c\xd2\x04\x00\x4e\xf3\x82\x4f\xbb\x25\xeb\x82\xfa\x75\x58\x59\x75\x9a\x26\xc3\xe8\x21\x04\x7e\xd2\x64\x32\x68\x9b\xd1\x12\xda\xc2\x4d\xff\x20\xc5\x98\x6a\x4e\x13\xe5\x6c\x68\xe0\xd6\xeb\x33\x78\x69\x67\x84\x57\x8f\x23\xbc\x5a\xe0\x7c\x82\xf1\x6d\x63\x79\x4d\x2c\x51\xd7\x2d\x76\xeb\x7c\x15\xb1\xd6\x6b\xbc\x5a\x8c\x6f\x64\x41\x78\x02\xbb\xf7\x32\x28\x69\x50\xd7\xa8\xb4\xe5\xef\xbf\xc3\x04\x6f\xde\xbe\x8d\x46\x8f\x8d\x77\x8c\x40\x36\x6b\xd6\x7d\x66\x6d\x00\xe8\x00\x9e\x13\x42\x21\x8d\xa1\xc0\xa8\xac\xe6\x98\xe9\xcc\x9d\x05\x76\x5e\xce\x68\x1c\xcd\x1b\x97\x9b\xdb\xfb\xcb\xbb\xf3\x66\x09\x9c\x75\x08\x5f\x05\xe4\xb1\xc8\x80\xbb\x5f\x6e\x7f\xfb\xf5\x02\xd6\x31\xa6\x04\x35\x8f\x25\x65\x70\x15\x07\x9d\x11\x02\xf9\x85\x56\x14\xc6\xcf\xfc\xf1\xee\xc7\x9b\x48\x7b\x74\x71\xa5\xa6\xec\xf9\xbd\x0e\x50\xce\xaa\xca\x7b\xb2\x8c\x20\x73\xda\x82\xb0\x66\x85\x87\xab\x8b\x87\x11\x1e\xde\x4b\x9e\xc7\xdf\x6b\x97\xd1\x03\xa4\x27\x78\xfa\xb3\xd2\x9e\x32\x64\x95\xd7\x76\x06\xa3\x03\xc3\x95\xb1\xfd\xb1\xe3\x23\x38\x9e\x93\xef\xd2\xef\x30\x01\xe5\x2a\x93\xc5\x74\x72\x62\x35\xa7\x0c\x0b\x2d\x61\xe4\xc7\x15\x02\x4b\x86\x71\x33\xad\xce\x31\x67\x2e\xc3\xb9\x10\x53\x5a\x39\x9b\xf5\x54\x69\x27\x32\xa7\x82\xd8\xb0\x27\xb4\x65\xf2\x56\x1a\xd1\xb6\xef\x2c\x22\x9d\x45\xa4\x34\x89\xd2\xea\xab\x0c\xec\x2b\xc5\x58\x1f\x2f\x87\x68\xa7\xf3\xa8\x83\x0b\x0a\xca\xeb\x32\x16\xb5\x75\x7b\xf8\x66\x23\x86\x8d\xe5\xfd\xaa\xa4\x46\x4f\x75\xbd\x75\xf2\x42\x3d\x69\x72\x22\x04\x94\xd1\xb1\x17\x9d\x76\xfa\x9d\xc5\x87\xb9\x56\xf3\xad\xbe\x49\xa3\x17\xb1\x5b\x27\x9d\xc9\x5d\xcb\x89\x8f\x38\x31\xb4\x10\x71\x14\x50\x05\xca\x20\x03\x64\xdc\x15\xb2\x44\xee\x7c\x3f\x2a\x0b\x69\x2a\x1a\xe1\x35\x0a\x92\x36\x34\xe2\x0a\xc4\x23\xbc\xe9\x0e\x02\x71\x8b\xd5\x00\x35\xea\x4f\x93\x93\xcc\x59\x6a\x76\xdf\x7e\x93\x26\x27\x45\xbc\x8f\x83\x39\xbe\xae\x98\x96\x69\xd2\x14\x72\x1c\xd3\xeb\x75\x47\xf2\xe5\xb2\x19\xff\x78\x96\x57\x56\x61\xe0\xf0\x75\x6b\x3b\xc4\xcf\xc4\x1d\xdf\x3a\x94\x46\xae\x3a\x22\x07\xc3\x5d\x2a\x63\x77\x63\x2a\x9e\xb8\xf2\x16\x6e\xfc\x82\xfa\x2e\xb5\x17\x01\xee\x0e\x04\x58\xec\x06\x18\xf6\x1e\x7d\xa4\x3d\x21\x30\xc1\x62\x37\x8d\x26\x68\xd3\x64\x13\xa8\xeb\xb2\x10\x87\x8a\xc2\x07\x6d\x0c\x66\xc4\xd8\x7b\x9b\x7b\x57\x74\x0a\xe8\x1e\x8e\xfd\x4a\xfc\x1b\x1c\x0e\x76\x6a\x1c\x61\xea\x9c\x19\x6e\x2a\x8c\xb3\x34\x18\xf6\x92\xd2\x39\xdc\x38\x6a\xe1\xcb\xa3\xde\xcb\x2f\x26\x78\xdd\x43\x7d\xbe\x35\x23\xb0\xaf\xa8\xb5\xac\xfb\x68\x9d\xf9\x56\x82\x4f\xf8\x48\xde\xfd\x1e\x55\xdb\x38\xe5\xd2\x04\xea\xda\x2a\x04\xae\xab\xc0\xff\x33\xb1\x9f\x09\x79\x48\xa0\xff\x92\xd4\xc9\x33\x52\x4b\x69\xb5\x1a\xe4\x05\x8f\xef\x4a\xaf\x2d\xe7\x83\xd3\x6e\xba\xb7\x20\xea\x3a\xbe\x18\xdd\x7c\x9f\x0e\x87\x9f\x98\x3e\x6a\x62\x84\x38\x34\x23\x2d\xad\xe1\x10\xad\xda\xb2\xfb\x47\xb4\xfe\x27\x23\xd9\xb2\xfc\x34\x39\x86\xe6\x43\x43\xdc\xbd\xd4\xbb\xaf\xf6\x8b\xf4\x95\x71\x96\x06\xcb\xad\x93\xf5\xe6\xef\xe1\xa8\xaf\x91\xbd\x75\x2c\xf7\xb6\xe8\xf9\xdf\xce\x76\xb1\x8d\x4f\xf3\x41\x54\xa7\xc9\x5f\x01\x00\x00\xff\xff\x87\x6d\xe5\xa1\xb5\x09\x00\x00") +var _cmdDefinitionsTmplObjectTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x56\x4f\x6f\xe3\xb6\x13\x3d\x87\x9f\xe2\xfd\x82\xe0\x57\xbb\xb0\xa5\xdd\xb6\xe8\x21\x5d\x1f\x8a\x75\xda\x06\x68\xe2\x05\x9c\xf6\x1c\x9a\x1a\xd9\x6c\x28\x52\x25\x47\x5e\x7b\x1d\x7d\xf7\x82\x92\x9c\xd8\x89\xbd\xf5\xa2\x68\x4f\xe6\x9f\x99\xc7\x99\x37\x6f\xc6\x4a\x53\xbc\x77\x19\x61\x4e\x96\xbc\x64\xca\x30\x5b\x63\xee\x9e\xf6\x50\x45\x96\x66\x94\x6b\xab\x59\x3b\x1b\x7e\xc0\x78\x82\xdb\xc9\x1d\xae\xc6\xd7\x77\x89\x28\xa5\x7a\x90\x73\x02\xaf\x4b\x0a\x42\xe8\xa2\x74\x9e\xd1\x13\x00\x70\x9e\x17\x7c\xde\xae\x58\x17\xd4\x2d\xc3\xda\xaa\x73\xd1\x17\x22\x4d\xf1\x93\x26\x93\x41\xdb\x8c\x56\xd0\x16\x6e\xf6\x07\x29\xc6\x4c\xb3\x50\xce\x86\x88\xb3\xd9\x0c\xe1\xa5\x9d\x13\x2e\x1e\x06\xb8\x58\xe2\x72\x84\x64\xd2\xd8\xdd\x10\x4b\xd4\x75\x83\xda\x7a\x5e\x47\xa0\xcd\x06\x17\xcb\xe4\x56\x16\x84\x47\xb0\xfb\x20\x83\x92\x06\x75\x8d\x4a\x5b\xfe\xfe\x3b\x8c\xf0\xf6\xdd\xbb\x68\xf4\x10\x9d\x23\x3e\xd9\x2c\x2e\xdb\x90\x5a\x6c\xe8\x00\x5e\x10\x42\x21\x8d\xa1\xc0\xa8\xac\xe6\x18\xe2\xdc\x0d\x03\x3b\x2f\xe7\x94\x88\x34\x8d\x0e\xb7\x93\xbb\xab\xe9\x65\x5c\x01\xc3\xce\xfd\xab\x80\x3c\xa6\x16\x30\xfd\x65\xf2\xdb\xaf\x63\x58\xc7\x98\x11\xd4\x22\xa6\x92\xc1\x55\x1c\x74\x46\x08\xe4\x97\x5a\x51\x48\xf6\xdd\xf1\xfe\xc7\xdb\x48\x71\xf4\x70\xa5\xa6\xec\xc5\xb5\x0e\x50\xce\xaa\xca\x7b\xb2\x8c\x20\x73\x7a\x06\xb0\x66\x8d\xfb\xeb\xf1\xfd\x00\xf7\x1f\x24\x2f\xe2\xef\x8d\xcb\xe8\x1e\xd2\x13\x3c\xfd\x59\x69\x4f\x19\xb2\xca\x6b\x3b\x87\xd1\x81\xe1\xca\x58\xe8\x58\xdb\x01\x1c\x2f\xc8\x77\xb1\xb7\x90\x80\x72\x95\xc9\x62\x2c\x39\xb1\x5a\x50\x86\xa5\x96\x30\xf2\xd3\x1a\x81\x25\xc3\xb8\xb9\x56\x97\x58\x30\x97\xe1\x32\x4d\x67\xb4\x76\x36\xdb\x72\xa4\x5d\x9a\x39\x15\xd2\x67\xda\x52\x6d\x99\xbc\x95\x26\x6d\x6b\x36\x8c\x48\xc3\x88\x24\xa2\x86\xb6\x29\x06\xf6\x95\x62\x6c\x4e\x15\x40\x34\xd3\x79\xac\xfc\x98\x82\xf2\xba\x8c\x09\x3d\x5f\x1e\xbd\x78\xaa\xfe\xb3\xdd\xdd\xba\xa4\x46\x3e\x75\xbd\x73\xf2\x42\x2c\xe2\x2c\x4d\xa1\x8c\x8e\x05\xe8\xb4\xb2\xdd\x59\x7c\x5c\x68\xb5\xd8\x29\x96\x34\x7a\x49\x89\x38\xeb\x2c\xa6\x2d\x13\x5e\x34\x8f\xa6\x69\x14\x3c\xaa\x40\x19\x64\x80\x8c\xbb\x42\x96\xc8\x9d\xdf\x36\xc4\x52\x9a\x8a\x06\x78\x83\x82\xa4\x0d\x8d\x98\x02\xf1\x00\x6f\xbb\x83\x40\xdc\x40\x35\x38\x8d\xca\xc5\x59\xe6\x2c\x35\x9b\x6f\xbf\x11\x67\x45\xbc\x8d\x8d\x97\xdc\x54\x4c\x2b\x51\x0b\x71\x0a\xb1\x9b\x4d\xc7\xe9\xd5\xaa\x69\xeb\xba\x16\x79\x65\x15\x7a\x0e\x5f\xb7\x96\x7d\xfc\x4c\xdc\xd1\xab\x43\x69\xe4\xba\x63\xae\xd7\xdf\xe7\x0e\x9b\x26\x42\x4f\x5c\x79\x0b\x97\xbc\xa2\x3a\xc6\xf4\x0a\x7c\x7a\x04\x7c\xb9\x0f\xde\xdf\x7a\x74\xaf\x1c\x80\xc7\x08\xcb\xbd\x08\x44\x57\x4e\x13\x9a\xd7\xa3\xd8\x8f\xa4\x82\x8f\xda\x18\xcc\x89\x71\xf0\x36\xf7\xae\xe8\x6a\xdd\x8c\x84\x83\x62\xfb\x02\xda\x7a\x7b\xa9\x0d\x30\x73\xce\xf4\x9f\x12\x8b\x8d\xd2\xeb\xb7\xca\xd1\x39\x5c\x12\x6b\xfe\xff\x93\xe6\xdf\xff\x46\x78\xd3\xe1\x7c\xbe\x14\x03\xb0\xaf\xa8\x31\xac\xc5\x2e\x69\x3b\x91\x3d\xe2\x13\x79\xf7\x7b\x14\x66\xe3\x91\x4b\x13\x48\xb4\x3c\xde\x54\x81\xff\x4b\x2e\x3f\xf3\xde\x11\x19\xfe\x23\x1e\x47\xfb\x3c\x96\xd2\x6a\xd5\xcb\x0b\x4e\xa6\xa5\xd7\x96\xf3\xde\x79\xd7\xb6\x3b\x08\x75\x1d\xe7\x40\xd7\xb8\xe7\xfd\x7e\x47\xee\xdf\xb7\x44\x9a\x1e\x6b\x82\x96\xca\x70\x8c\x4a\x6d\xd9\x7d\x39\x95\xff\x42\xc3\xb5\xd4\x3e\x8e\x4e\xe1\xf6\x60\x87\xb6\x03\x77\x77\xf6\xbe\x0a\x5b\x19\x67\xa9\xb7\xda\x39\xd9\x3c\xcd\xf7\x53\xbe\x1e\x0e\x86\xbf\x3a\x54\x92\x17\xff\x1a\x3b\x19\x36\x0e\xf1\xd3\xa5\x16\x7f\x05\x00\x00\xff\xff\xa7\xaa\x95\x75\x54\x09\x00\x00") func cmdDefinitionsTmplObjectTmplBytes() ([]byte, error) { return bindataRead( @@ -258,11 +258,11 @@ func cmdDefinitionsTmplObjectTmpl() (*asset, error) { } info := bindataFileInfo{name: "cmd/definitions/tmpl/object.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc6, 0x91, 0x7b, 0x9, 0xcb, 0x8f, 0x73, 0xe5, 0xf2, 0x8e, 0xdd, 0xe4, 0x28, 0x3f, 0x39, 0x6d, 0x73, 0x1d, 0xc2, 0xb3, 0xaa, 0xa2, 0xe4, 0x41, 0x66, 0x44, 0x31, 0x0, 0x6d, 0xa9, 0xbb, 0x4b}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2d, 0x61, 0x7d, 0x5b, 0xc0, 0xc8, 0xe7, 0x81, 0xf1, 0x98, 0xf, 0xb1, 0xee, 0x37, 0x9f, 0xa2, 0xc0, 0x15, 0x45, 0xcd, 0xb, 0x28, 0xe8, 0x1b, 0xcb, 0xb2, 0x9f, 0x24, 0x62, 0x3b, 0xf4, 0x3a}} return a, nil } -var _cmdDefinitionsTmplOperationTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x54\x4d\x8b\xdb\x30\x10\xbd\x1b\xfc\x1f\x06\x91\x83\x0d\x5b\xe7\x5e\xd8\x53\xbb\x85\x85\xb2\x1b\x5a\x4a\x8f\x45\x91\x27\x59\x51\x5b\x52\x47\xe3\xfd\x20\xf5\x7f\x2f\x92\x95\x0f\xbb\x29\x26\x6d\x29\xbd\xd9\xa3\x99\xf7\xe6\xbd\xd1\xc8\x49\xf5\x55\x6e\x11\xf8\xc5\xa1\xcf\xb3\x3c\xd3\xad\xb3\xc4\x50\xe4\x19\x00\x80\x50\xd6\x30\x3e\xb3\x48\xbf\xda\x8a\x3c\x2b\x43\xde\x6e\xf7\x0a\x48\x9a\x2d\xc2\xe2\xcb\x15\x2c\x34\xbc\xbe\x86\xea\xd6\x30\xd2\x46\x2a\xf4\xd0\xf7\x21\x07\x16\xba\x7a\x8b\x5e\x91\x76\xac\xad\x89\xd1\x40\x05\xe9\x48\x7b\xd7\xc8\x97\x3b\xd9\x22\xf4\x3d\xe8\x7d\x39\xec\x06\xbe\x40\xa2\x37\x60\x09\x0a\xfc\x16\x0a\x62\xa6\xf0\x48\x8f\x5a\x21\x89\x72\x12\x67\x4b\x72\x1b\xe2\x81\x27\x00\x7c\x64\xd2\x66\x5b\x94\xe0\xe3\xc7\x11\x15\x4d\x1d\x9b\xd9\x47\x4e\xb5\x58\x17\xc4\x2c\x74\x75\xef\x06\x1d\x21\x65\xb9\x8c\x3d\x5b\x37\x70\x7d\x07\xb6\x2b\xe9\x95\x6c\x42\xe3\xe9\x64\xaa\x34\x41\x9f\x2f\x2a\xd2\xc9\x3b\x4b\xad\xe4\x95\x24\xd9\x06\xb6\x12\xc6\x07\x1f\xd0\x77\x0d\xfb\xcf\x9a\x1f\x56\xc3\xac\x46\x5a\x45\x28\x19\x99\x65\x2c\xc7\xf2\xf7\x76\xe0\x99\x6f\x3f\x60\xbf\x19\xe6\xfc\x5b\x4a\x4e\xea\x0b\xc5\xcf\x90\xee\x4c\x95\x62\x57\x7f\x5f\xe8\x61\x7c\x93\xdf\x21\xd0\x76\x9e\x6f\xda\x35\xd6\x9f\x8c\x6e\x5d\x83\x2d\x1a\xc6\xfa\xdc\x8d\x2b\xca\x3c\x8b\x65\xcb\x25\xcc\x26\x47\x5c\x58\x23\x60\xc0\xae\xb1\x06\xb6\xf0\x20\x1f\x11\x36\x96\x9e\x24\xd5\xa0\x6c\xeb\x24\xeb\x75\x83\x70\xc0\x92\xc1\x43\x5f\xa5\x6b\x3f\x4f\xe2\x99\x3a\xc5\xb0\x8b\x6d\x6d\x3a\xa3\xa0\xf0\xf3\x65\xe5\x45\xa2\x2f\x47\x9f\xec\xd1\x7e\x3f\x09\xb9\x23\x03\x62\x16\x41\x24\x9f\x67\x16\xed\x82\x8e\xfe\xc9\x62\x4d\xde\xa1\xf3\xab\x85\x44\x70\x0d\x77\xf8\x74\xef\x90\xe2\xb8\xef\x2c\xdf\x1e\xfb\xbf\x21\xb2\x54\x88\xd3\x7e\xfb\x5e\x94\x3f\xbf\x45\x47\x47\xa3\x5b\xbf\x24\xbd\xc0\xa5\xff\x60\x67\xf7\x1e\xfe\x91\x4d\x23\x5b\x0e\x86\x8d\x3e\x8f\x3e\xfe\x08\x00\x00\xff\xff\xd7\x6e\xab\xe8\xd4\x06\x00\x00") +var _cmdDefinitionsTmplOperationTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x54\x4d\x8f\xd3\x30\x10\xbd\xfb\x57\x8c\xac\x1e\x12\x69\x49\xef\x48\x7b\x82\x45\x5a\x09\x75\x2b\x10\xe2\x88\x5c\x67\xda\xb5\x48\x6c\x33\x9e\xec\x87\x82\xff\x3b\xb2\x93\x76\xd3\xaa\x10\x15\x10\xe2\x16\x7b\x66\xde\x9b\xf7\xc6\x13\xaf\xf4\x57\xb5\x43\xe0\x67\x8f\x41\x08\xd3\x7a\x47\x0c\x85\x00\x00\x90\xda\x59\xc6\x27\x96\xc3\xc9\x38\x29\x4a\x21\xfa\xfe\x15\x90\xb2\x3b\x84\xc5\x97\x2b\x58\x18\x78\x7d\x0d\xd5\xad\x65\xa4\xad\xd2\x18\x20\x46\xd1\xf7\xb0\x30\xd5\x5b\x0c\x9a\x8c\x67\xe3\x6c\xba\x4c\x0c\x30\x46\x4c\xf0\x8d\x7a\x5e\xa9\x16\x21\x46\x30\xfb\x62\xe8\x33\x53\x62\x30\x5b\x70\x04\x05\x7e\x4b\xf9\x39\x51\x06\xa4\x07\xa3\x91\x64\x79\x72\xcf\x8e\xd4\x2e\xdd\xc7\x98\xeb\x3f\x32\x19\xbb\x2b\x4a\x08\xf9\xe3\x80\x89\xb6\x4e\x8d\x8c\xe7\xa9\x08\xe7\x93\x8a\x85\xa9\xee\x7c\x16\x90\x32\x96\xcb\xdc\xad\xf3\x03\xcd\x77\x60\xb7\x56\x41\xab\x26\xb5\x3c\x46\x4e\x24\x8e\xc0\xe7\x6b\x8a\x31\xf2\xce\x51\xab\x78\xad\x48\xb5\x89\xab\x84\xe3\xc0\x07\x0c\x5d\xc3\xe1\xb3\xe1\xfb\xf5\x30\x9b\x23\x95\x32\x95\x4c\x5d\xb2\x8e\x73\xf5\x7b\x37\xd0\xcc\xf6\x9e\x90\xdf\x0c\x83\xfd\x1d\x19\x93\xf2\x42\xf3\x13\x8c\x6f\xa4\x1a\xef\xae\xfe\xba\xca\xfd\xd8\x8e\x4f\xf9\xd8\x76\x81\x6f\xda\x0d\xd6\x9f\xac\x69\x7d\x83\x2d\x5a\xc6\xfa\xdc\x1b\x2b\x4a\x11\x85\x58\x2e\x61\x36\x33\x83\xc2\x06\x01\x13\x70\x8d\x35\xb0\x83\x7b\xf5\x80\xb0\x75\xf4\xa8\xa8\x06\xed\x5a\xaf\xd8\x6c\x1a\x84\x03\x96\x4a\xde\x85\x6a\x78\xe4\xf3\x1c\x81\xa9\xd3\x0c\x7d\x14\x62\xdb\x59\x0d\x45\x98\x2f\x2a\x2f\x92\x7b\x29\xf6\xc9\xce\x8c\x9b\x48\xc8\x1d\x59\x90\xb3\x00\x32\xd9\xfb\xeb\x9d\xba\xa0\x99\x7f\xb2\x44\xc7\x3f\x9b\xb3\x6b\x84\x44\x70\x0d\x2b\x7c\xbc\xf3\x48\x79\xc4\x2b\xc7\xb7\x2f\xdd\xdf\x10\x39\x2a\xe4\xb4\xdb\x18\x65\x79\xfa\xc3\x79\x71\x52\x44\xf1\x33\xbe\x0b\xec\xf9\x0f\x76\x73\x34\xef\x4f\x0c\x9a\x38\xb2\x37\x6a\xfa\x75\x70\xef\x47\x00\x00\x00\xff\xff\xbd\xe8\x37\x32\xa2\x06\x00\x00") func cmdDefinitionsTmplOperationTmplBytes() ([]byte, error) { return bindataRead( @@ -278,11 +278,11 @@ func cmdDefinitionsTmplOperationTmpl() (*asset, error) { } info := bindataFileInfo{name: "cmd/definitions/tmpl/operation.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xcb, 0xc9, 0xcd, 0xdd, 0x8a, 0xb9, 0x1f, 0x37, 0x80, 0x71, 0xca, 0x8f, 0xe8, 0x56, 0xf2, 0xc3, 0xd4, 0xae, 0xc4, 0x17, 0x45, 0xcc, 0x86, 0xec, 0xf8, 0xb6, 0xec, 0x60, 0x2c, 0x1f, 0x84, 0x99}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc2, 0xaf, 0x9a, 0xb8, 0xf7, 0x9f, 0x1b, 0x53, 0xaa, 0x36, 0x95, 0x6d, 0xe6, 0x56, 0x7d, 0xb9, 0x8e, 0xd7, 0x4, 0x74, 0xce, 0x5b, 0x9, 0x4f, 0xb6, 0x92, 0xc, 0x1e, 0x49, 0x5, 0x4c, 0x4c}} return a, nil } -var _cmdDefinitionsTmplPairTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x50\x3d\xab\xdb\x30\x14\xdd\x0d\xfe\x0f\x07\xe3\x21\x81\xc4\x5a\x3a\xa5\x74\x6a\x3a\x94\x42\x92\x21\xb4\x63\x51\xe4\x1b\x45\xc4\x96\x84\x7c\xed\xd6\xb8\xfe\xef\x45\x8a\xf3\x1e\x8f\xb7\x3c\x0f\x46\xe7\xe3\x1e\x1d\x5d\x21\xf0\xd5\xd5\x04\x4d\x96\x82\x64\xaa\x71\x19\xa1\xdd\x0b\x86\x6a\x6b\x51\xd3\xd5\x58\xc3\xc6\xd9\xee\x33\xf6\x47\x1c\x8e\x67\x7c\xdb\x7f\x3f\x57\x79\xe6\xa5\xba\x4b\x4d\xf0\xd2\x84\x2e\xcf\xf2\xcc\xb4\xde\x05\xc6\x2a\xcf\x00\xa0\x50\xce\x32\xfd\xe5\x62\x81\x6c\x5a\x2a\xa2\x2d\x21\x6d\xf8\xd6\x5f\x2a\xe5\x5a\x71\xa1\xd1\xd9\xba\x63\x17\xa4\x26\xa1\xdd\xf6\x79\x1c\x3e\x09\x7f\xd7\xe2\xc6\xec\x55\x63\xc8\x3e\xa3\xaa\x0f\x8f\xf3\xe8\xa9\x4b\x97\xae\xe3\x6f\x9a\xb6\x08\xd2\x6a\x42\xf9\x7b\x83\x72\xc0\xee\x0b\xaa\x53\xac\x8f\x79\x7e\xc8\xa5\xb7\xb2\xa5\x28\x94\x43\x75\x88\xc7\x7f\x60\x77\x92\x9d\x92\x4d\x32\x09\x81\x5f\x86\x6f\xd3\xf4\xb4\xce\x33\xfe\x98\xa6\x81\xf4\xbe\x19\x11\xf9\x65\x70\x9e\x31\xc8\xa6\x27\xb0\xc3\xd1\xa7\x15\x56\x71\x3e\x5e\x14\x4d\x7b\xea\x54\x30\x49\x48\xc9\xd7\xde\xaa\x77\xd9\xab\x61\x89\x3c\x8f\x3e\xe2\x35\x62\x5f\x4c\x8f\x4d\x04\xe2\x3e\xd8\x44\x2d\x4c\xfc\x7e\xd0\xb8\x43\xf1\xa6\x49\xb1\x79\x95\x7f\xc6\x52\x3b\x0c\x0b\x35\xe7\xd9\xf2\x76\xb2\x75\x2a\xf2\x3f\x00\x00\xff\xff\x18\x07\x5a\xb5\x19\x02\x00\x00") +var _cmdDefinitionsTmplPairTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x90\x41\x6b\xe3\x30\x10\x85\xef\xfa\x15\x0f\xe3\x43\x02\x89\x75\xd9\x53\x96\x3d\x6d\xf6\xb0\x14\x92\x1c\x42\x7b\x2c\x8a\x3c\x51\x44\x6c\x49\xc8\x63\xb7\xc6\xf5\x7f\x2f\xb2\x93\x40\xe9\xa5\x3a\xcd\x7c\xf3\xe6\xf1\x46\x52\xe2\xaf\x2f\x09\x86\x1c\x45\xc5\x54\xe2\xd4\xc3\xf8\x47\x0f\x5d\x97\xb2\xa4\xb3\x75\x96\xad\x77\xcd\x6f\x6c\xf7\xd8\xed\x8f\xf8\xb7\xfd\x7f\x2c\x44\x50\xfa\xaa\x0c\x21\x28\x1b\x1b\x21\x6c\x1d\x7c\x64\x2c\x04\x00\x64\xda\x3b\xa6\x77\xce\xe6\x8e\x6d\x4d\x99\x98\x6b\x63\xf9\xd2\x9e\x0a\xed\x6b\x79\xa2\xde\xbb\xb2\x61\x1f\x95\x21\x69\xfc\xfa\x5e\x76\xbf\x64\xb8\x1a\x79\x61\x0e\xba\xb2\xe4\x6e\x3e\xc5\x8f\xb7\xb9\x0f\xd4\x64\x42\x2c\x85\x18\x86\x35\xa2\x72\x86\x90\xbf\xae\x90\x77\xd8\xfc\x41\x71\x48\x99\x31\x8e\xd3\x34\x0f\x4e\xd5\x94\x78\xde\x15\xbb\x54\x7e\x80\xfd\x41\x35\x5a\x55\x49\x23\x25\x5e\x2c\x5f\x86\xe1\xae\x1c\x47\xbc\xd9\xaa\x82\x0a\xa1\xea\x91\xf8\x6d\x6f\x1c\xd1\xa9\xaa\x25\xb0\xc7\x3e\x4c\x9f\x56\x08\x29\xc5\x2c\xd9\x52\xa3\xa3\x9d\x70\xb2\x3d\xb7\x4e\x7f\x33\x5e\x74\x37\xbf\x63\x1f\x52\xbf\x44\x8a\x8a\x61\xba\x3f\x12\xb7\xd1\x4d\x64\x06\xe9\x3d\x51\xbf\x41\xf6\x25\x44\xb6\x7a\x4c\x9f\x53\x9c\x0d\xba\x99\x8c\x62\xbe\x98\x5c\x99\x12\x7c\x06\x00\x00\xff\xff\x4a\xa4\x90\x14\x01\x02\x00\x00") func cmdDefinitionsTmplPairTmplBytes() ([]byte, error) { return bindataRead( @@ -298,11 +298,11 @@ func cmdDefinitionsTmplPairTmpl() (*asset, error) { } info := bindataFileInfo{name: "cmd/definitions/tmpl/pair.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xaa, 0x1e, 0xeb, 0xe, 0xa3, 0xa6, 0x3d, 0xce, 0x75, 0x4e, 0x3a, 0x23, 0x18, 0x86, 0x63, 0x49, 0xba, 0xba, 0x96, 0x5a, 0xf2, 0x55, 0x2f, 0x67, 0x35, 0xc, 0x79, 0x2e, 0xde, 0x1c, 0xdf, 0x8d}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8f, 0x39, 0x9e, 0xc1, 0x58, 0xb2, 0xe1, 0x28, 0x83, 0x3f, 0x14, 0x45, 0x7, 0x96, 0x7c, 0xf8, 0xb7, 0x32, 0x8d, 0xde, 0xd, 0x5e, 0xeb, 0x65, 0x68, 0x64, 0x58, 0xd9, 0xad, 0x94, 0xe5, 0x38}} return a, nil } -var _cmdDefinitionsTmplServiceTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5a\x5b\x8f\xdb\xb8\x15\x7e\x1f\x60\xfe\xc3\x59\x61\x50\xd8\x81\x23\xef\x16\x7d\xe9\x14\x7e\x68\x67\xd2\x74\xb0\x9b\x64\x90\xc9\x76\x1f\xb2\x8b\x01\x2d\x1d\xd9\xac\x25\x52\x21\x69\x4f\x0c\x57\xff\xbd\xe0\x45\x77\x4a\xb6\x27\xdd\xdd\x16\xc8\xbc\x8c\x24\x1e\x1e\x1e\x9e\xcb\xc7\x8f\xa4\xe7\x73\xb8\xe1\x31\xc2\x0a\x19\x0a\xa2\x30\x86\xe5\x1e\x56\xbc\x7a\x87\x1d\x25\x10\x65\xf1\x3c\xc6\x84\x32\xaa\x28\x67\xf2\x2f\x70\xfb\x0e\xde\xbe\xfb\x00\xaf\x6e\xef\x3e\x84\x97\x17\x39\x89\x36\x64\x85\x70\x38\x40\xf8\x96\x64\x08\x45\x71\x79\x71\x79\x41\xb3\x9c\x0b\x05\x93\xcb\x0b\x00\x80\x20\xe2\x4c\xe1\x67\x15\xb8\x57\xca\xcb\x27\x45\x33\x0c\x74\x07\xf3\xb6\xa2\x6a\xbd\x5d\x86\x11\xcf\xe6\x4b\xdc\x73\x16\x4b\xc5\x05\x59\xe1\x7c\xc5\x5f\x96\x8f\xbb\x3f\xcd\xf3\xcd\x6a\xbe\x56\x2a\x8f\x52\x8a\xac\x52\x7a\x62\x67\x89\x62\x47\x23\x94\xae\x5b\x78\x72\x47\xb5\xcf\x4d\xaf\xa9\x36\x77\x47\x04\x3c\xc2\x83\x6d\x15\xe5\x7b\xa9\x3b\x7c\xb0\x0f\xaf\x84\xe0\x55\x63\x6d\x71\xf8\x2e\x37\xbe\x2c\x5b\xb4\x13\xc2\xdb\xad\x20\xfa\xab\xd6\x3e\x9f\xc3\x87\x7d\x8e\x40\x25\xa8\x35\x82\x1e\x19\x12\x2e\xda\x4e\x8e\x38\x93\xca\xca\x2d\x20\x68\x34\x05\x4e\xc5\xbb\xe5\xbf\x30\x52\x0f\x7b\xa9\x30\x7b\x83\x8a\xc4\x44\x11\xd0\x13\x42\x09\xd2\x7c\x85\xac\xfc\xac\xb5\x73\x23\x1f\x5e\x5e\x98\xf1\x06\x7a\x8b\x6d\xa4\xe0\x70\x79\x71\x38\xbc\x04\x41\xd8\x0a\xe1\xea\x71\x06\x57\x3b\xb8\x5e\x40\x78\xc7\x12\x2e\x8d\x71\xda\xb5\x5a\x84\x26\x80\x9f\xe0\x6a\x17\x3e\x44\x3c\x47\x08\xec\x18\x41\x57\x86\x71\xa5\x85\x5e\xa7\x7c\x49\xd2\x56\xe3\x55\xce\xf4\xac\xae\x17\xba\xdd\x4c\xf0\xdf\xa0\xf8\x3d\x91\x51\x47\x90\x26\x5a\xe2\x96\xca\x3c\x25\xfb\xca\x49\xe0\xfe\x1a\xaa\x16\x43\x72\x5a\x06\x59\xdc\x78\x37\x92\x28\x23\x41\x4d\xc0\x5a\x2d\x56\x59\x51\x38\x31\x13\x87\x61\x4d\xf5\x7b\xf3\xb9\x70\x91\x7a\x8d\xca\xeb\xee\x27\x9a\xa6\xb0\x42\xe5\x0f\x46\x22\x78\xe6\x5a\x42\xad\xc6\xa8\x7a\x09\x1f\xd6\x54\x42\xb2\x65\x91\x31\x59\xae\xf9\x36\x8d\x8d\x83\x97\x08\x11\x49\x53\x5b\xe6\x2e\x55\x81\x66\x79\x8a\x19\x32\x85\x22\xac\x14\x20\x08\x54\x5b\xc1\x28\x5b\x95\x43\x5b\xf1\x6a\x6c\x2a\x41\x20\x89\x81\xb3\x74\x0f\x84\xc5\x9d\x71\x32\x1e\xd3\x84\x62\x1c\x5e\x5e\x68\x4b\x86\x26\x38\xe1\xf0\xc2\x7e\x9f\xfa\xa7\x78\xb0\xfe\x93\xd9\x0c\xf8\x46\x27\x01\x0f\x5f\x63\x57\xc9\xd4\x0a\xd1\x44\xcb\x1c\xea\x98\xdb\x39\x80\xcc\xc2\x89\x4f\xb9\xeb\xe6\x42\xe4\x84\x7d\x82\x87\x46\xa4\xe4\x58\xa4\xe4\x50\xa4\x28\x53\xfc\xd4\x48\x19\x8f\xd6\xa1\xe2\x2c\xc2\x19\xe4\x29\x12\x89\x90\x91\x0d\x82\xdc\x0a\x04\x92\xa6\x60\x54\xaf\x89\x84\x25\x22\x83\x27\x41\x95\x42\x06\x4b\x4c\xb8\x40\x6d\x4b\xe9\xfc\x01\x9b\x6b\xe7\xcf\x40\x66\x5e\xc3\xa7\xa5\x3b\x79\xf8\xd0\x73\xbb\xcc\xa6\xb5\x5f\x1c\x12\x9e\x0e\x36\x0e\x58\xcd\xc7\x12\x72\x86\x94\x7c\x21\xe6\xb8\xa1\x82\x1e\x20\x0c\x02\x8f\x07\x35\xc6\x01\xa8\xa3\x75\x04\x88\xce\x01\xa4\xa6\x6c\x13\x4e\xea\xef\x43\x00\xd5\x94\x18\x03\xaa\x67\x82\x95\x3f\x50\x15\x5a\xf9\x70\xca\x75\x79\x63\xc3\xdd\x28\x81\x26\xd6\xf8\xf5\x9e\x8f\x35\x5e\x3d\x13\x09\x2f\x1a\x56\x4c\x07\x46\xeb\x41\x8e\x7c\x1e\xe4\x78\xb5\x7b\x31\xc7\x2b\xd9\x01\x9d\x11\x8f\xcb\xbe\xc7\x0d\xde\x0c\x7a\xfc\xb7\x02\x9d\x53\xa2\x60\xa0\xc7\xef\xaa\x2a\x12\xa3\xd8\xe3\xc5\x84\x7b\x42\x85\xac\x12\xd8\x5b\xe6\x27\x95\x76\x5d\xce\x37\x9c\x25\x29\x8d\x94\xf9\x3c\x9f\xc3\x2d\xe6\x02\x23\xcd\x99\xaf\xe1\x47\x89\x90\xeb\x11\xc3\x9f\xa8\x5a\xb7\x4a\x8e\x32\xa9\x90\xc4\xce\xff\xcd\x6a\x9a\xcf\xa1\x27\x6d\xc2\x49\xf2\x3c\xdd\xbb\x5a\x75\x68\x00\x3b\x92\x6e\x11\xf4\x1a\x62\x89\x63\xa5\xcf\x57\xff\xc6\xfd\x5d\xdd\x93\x5d\xbb\xfc\xa7\xa0\x7d\xe4\x49\x5d\xfd\xb9\xf1\xf5\x7b\xdc\x5f\x1b\x72\x59\x5b\x13\xcc\xea\xe6\x7f\x6a\xc3\xae\x61\x37\xab\xf2\xba\x03\x1a\xcd\x67\x4b\x77\xb5\xa7\xde\x90\x1c\x16\x90\x91\xfc\xa3\x54\x82\xb2\xd5\x2f\xf6\x5f\x69\xce\x91\x98\x9e\x85\xcc\x1d\xdb\xab\xc9\x38\x3f\x94\x93\xe9\x01\x9d\xd7\x06\xad\x45\xe6\x24\xc2\xb6\x21\x0a\xb3\x3c\xd5\xfb\xa5\x80\x6a\x1e\x95\x68\x81\xc0\xd4\xcd\x43\xaa\x39\x56\x39\xfe\xd5\x2e\xbc\xab\x04\x06\x34\x24\x48\xd4\x56\x0c\xf6\xff\xfb\x96\x45\xd2\x3c\x38\xb9\x01\x35\xda\xcb\x8f\x0c\x9f\x9a\x6a\x26\x3e\x3f\x4d\xcd\x47\x7c\x1a\xd1\xd3\xb1\xa5\x36\x63\x60\x06\x0e\x5b\xc6\xa7\xd0\x4f\x0e\xfd\x66\x36\x9a\x1d\x3f\x36\xaa\x55\x07\x81\xb2\x18\x3f\x43\x08\xdf\xd6\x0d\x46\x5a\x36\x1b\xbf\x33\x8d\x3a\xdd\x26\xc3\x29\x55\xf6\x2b\xa7\xf1\xd8\xac\xba\x56\x2a\xc1\x02\xfe\x60\xab\xa9\xfd\xfd\xe0\x59\x32\xa7\x63\xf3\xaa\xa3\x3b\x38\x2b\x0f\x04\x5d\x25\xcc\x33\x3b\xdb\xd2\x6a\xf8\xa3\x1b\xd2\xb0\x29\x67\x70\x51\x54\xa9\x52\x33\xa9\x41\x97\x24\xf2\xc4\xed\x8f\xd7\x4d\x4b\xce\x53\x6f\x3d\x0d\x7b\xa4\x4e\xd4\xe3\x71\x4e\x58\xdf\x0b\x55\xd3\xc6\xda\xcf\xbc\x48\x60\xf0\x56\x0f\x55\x39\x45\x3f\xe8\x4e\x1a\xa4\xed\x2e\x3b\x27\x42\x62\xec\x9c\xe4\x7c\xd8\xe9\xa2\x7b\x14\x45\xc7\x8f\xa6\x44\xe0\xe3\x2f\x1a\xa0\xca\x93\x8c\xf9\x1c\xde\xe3\xa7\x2d\x15\x18\xdb\x76\xaf\xcb\x75\x4b\x69\x75\x25\x5e\x3a\xf9\x1f\x44\x9a\x91\x09\x15\x3e\x57\x43\xcb\xd9\x63\x72\x75\xf3\xe8\x1e\x75\x3e\x77\xab\x0b\x49\x4f\x34\xb9\x12\xff\xef\x9b\x7c\x8a\xd1\x75\x58\x85\xc4\xfb\x81\xd8\x9a\x25\xd5\x48\xd8\x05\x4f\x1a\x34\x32\xfc\xe8\xc5\x40\x3e\xb8\x15\x74\x4c\xed\x84\xe7\xaa\x0c\xf9\x14\x26\x03\x8a\x66\x80\x42\x70\x51\x11\x19\x81\x72\x9b\x2a\xed\xbd\x81\x0e\x8d\x75\xd7\x44\xe0\x1a\xf4\x38\xf5\xda\x6a\x1f\xf4\xee\xe9\x71\x06\xa6\x5e\x6d\x64\x8c\x35\x8d\xce\xf2\x89\xaa\x68\x0d\xbb\xf0\x7b\xdc\x37\xbf\x0f\x64\xe5\xb9\x99\xa9\xff\x22\xcd\x0c\x83\x76\x14\xf5\xf2\xda\xde\x7e\xd0\xc4\x4d\x3a\x3c\x92\x1a\x87\xfe\x06\x29\xe2\x4c\x51\xb6\xc5\x76\x4b\x67\x7f\x73\x9a\xf6\x05\x28\xd1\x55\xe4\x7a\x8e\x77\xdb\x85\x86\xe0\x84\x93\x6e\x36\x4e\x87\xb7\x4f\x23\xb5\x74\x6e\x3d\x7d\x75\xf4\x31\x47\x17\x9d\xda\x38\x27\x8d\x69\x02\xdf\x9c\xed\x34\xc7\x92\x87\x0a\xb8\x98\xd5\x67\xc0\x1a\x1c\xca\x41\xcd\x41\xf0\x41\xb3\x69\x79\xfd\xd1\xb1\xdd\x83\x27\xac\x50\x34\xa6\xd4\x9d\x74\x6b\xd3\x68\x2d\x9f\x01\xa3\xe9\x09\x2b\xec\x49\x34\xca\x6c\xed\x86\x16\xd8\xdc\x2d\xb0\xf9\xc8\x02\x7b\x8b\x09\xd9\xa6\xca\x3a\x46\xfb\xc3\x72\x76\x2a\xb5\x2d\xba\xc5\xad\x95\xe6\xfc\x27\xc7\x88\x26\x34\x02\x12\xd9\x53\x6f\xb3\xde\x0e\x68\x18\x3f\x02\xb2\x86\x1f\x25\x27\xe5\x0a\xdd\x5b\x43\x3c\x89\xe3\xd1\x0b\x5e\x6e\xdc\xe2\xb8\x39\x83\xab\xdd\xb1\x63\x94\x7e\x70\xbe\x90\xfa\x1c\x89\xcc\x33\xe8\xd1\xe6\x19\xfc\xa8\xd3\xe7\x38\x45\xfa\x7d\xb8\xd0\xa9\x6c\xe8\xff\x8e\xf6\x6c\x9e\xc3\x7b\x36\x3e\xe2\x33\x91\xf0\xa2\x6e\x9e\x8e\x8e\x33\x48\x84\x36\x67\x33\xa1\xcd\x6f\x4a\x85\xbe\xf2\x9d\xe7\x2e\xc3\x7e\x5b\x7d\x8b\xf3\x57\xaa\xf3\xeb\xfb\xd8\x2d\xac\xd7\xfe\x6b\x88\x9c\xe9\x69\xb8\xfd\xff\x0f\x9c\xdb\x42\xee\xdd\x12\xcc\xe7\x90\xea\xc6\x47\x13\x22\x77\x46\xa1\xc1\x42\xf0\x78\x1b\x61\x0c\x94\xc1\xeb\x87\xfb\x97\xdf\x7d\xfb\xe7\xb0\xd7\xf3\x2e\x81\xad\x44\x01\xc8\xc8\x32\x45\x50\xe6\x78\xd9\xaa\xa8\xc8\x50\x79\xcc\x4c\x57\x8c\x0b\x34\xa7\xb1\x72\x9b\x9b\x5f\x08\x98\x21\x0d\x3a\x84\xbd\x38\xcb\xb0\x3c\x2f\x09\x6b\xe3\x9f\x1b\xd6\xa1\x4b\x94\x1e\xa3\xdb\x8c\x53\xba\x1f\x99\x33\xbd\x64\x75\xfa\xe3\xf5\x6e\x84\x94\xce\xe7\x70\xb3\xc6\x68\x03\xa2\xb5\xf9\x0a\x7f\x2f\xca\x7a\x64\x82\xff\x0b\x9c\xb5\x71\x86\xd8\x39\xf1\x1d\x3d\x2c\xab\xe4\x86\xa8\xac\xc7\xe1\x23\x54\xcf\x1e\xfd\xff\xc0\xbb\x37\x7d\x6d\x1a\x98\xea\xf6\xc7\xd2\xe2\x61\x42\x58\xb9\x26\x95\xfd\x0b\xb8\xfe\xf1\xe9\x09\x8a\x4e\xb8\xb4\xf3\xbb\xf5\x4b\x18\xe7\x69\x64\xb2\x41\x45\xec\x63\xef\x20\xd1\x5d\x48\xb5\xaf\xa3\x0c\x6d\x89\x04\x6a\x4f\x10\x70\xbf\x1a\x82\xe5\xbe\xc4\xb9\xb0\xc5\x51\xae\x72\x56\x14\xd3\xc6\x58\x13\x73\x44\x17\xde\x13\x41\x32\x19\x3e\x98\x94\xd5\x12\xee\xfb\x7b\x93\x7f\xcd\x06\x57\x26\x91\xfa\xac\x67\xe4\xc6\x0b\xff\x46\xa2\xcd\x4a\xf0\x2d\x8b\xcb\x8b\xbe\xf2\x5e\x2f\xac\xc7\xfa\x89\xaa\xf5\x8d\xed\x30\x89\xd4\xe7\x19\xb4\xc6\xbe\x21\x69\x8a\xc2\x80\x7a\xdf\x25\x8d\xae\x43\xde\x19\x9b\x65\x67\xe4\xca\x6c\xf7\xad\x63\xc9\xe9\x5e\x88\x31\x41\x61\x62\x31\x99\x76\xa8\xd2\x55\x4e\xd4\xba\x0c\xba\x53\x7c\x4f\xd4\xda\x4e\xd3\x57\x38\x84\xc5\x30\xc1\x4f\xae\x67\x10\x4c\xdd\x1b\x83\xc0\xfd\x96\x24\x98\xfa\xaf\xab\xb5\xfc\x02\x82\xd9\xcf\xc1\xcf\x41\xff\xce\xbe\x0b\xe1\x28\x04\x2c\xf4\x4a\xc1\x45\x46\x94\xc1\xac\x49\x60\x27\xaa\x93\xb3\x28\x02\x43\x3e\x6b\xd5\x45\x01\xe5\x2d\xec\x64\xda\xc4\x04\x9a\x00\x43\xcb\x4e\xcc\x4f\x21\xde\xf0\x18\x21\xe8\x00\x50\xa6\x3f\x96\x24\xa6\x16\xf3\xe0\x90\xc6\x6a\x1e\xea\xd6\xf0\xce\x40\xb5\xe9\x5a\x14\x93\x69\x13\x9c\x9d\xf9\x25\xfe\xd6\x2a\xef\xd8\x8e\xa4\xd4\x81\xf0\xab\xcf\x39\x46\xe6\xae\x51\x37\x35\x94\xcd\xe0\xaf\x91\xda\x92\xf4\x1a\xec\x50\x45\x17\xf6\x8f\x00\xb3\xdd\x98\x2d\x80\xe4\x39\xb2\xd8\xf0\x77\x39\x03\x19\xba\x72\x33\xbb\xef\x46\xce\x87\x61\xe8\x7c\xb7\x23\x42\x73\xed\xa1\x83\x90\x52\x3f\xcf\xd5\xac\x0a\xd1\xe8\x89\xaa\x19\xba\xbe\x56\xd7\x7d\xbe\x59\xe8\x95\xa2\xbf\x94\x75\x96\xd7\x4e\x6d\xd6\x98\x74\x43\x32\xd4\xf1\xf0\x94\xe7\x07\x41\xb3\x1f\x88\x54\xae\x4e\x5f\xb1\x58\x6f\x14\xd6\x37\x3c\xcb\x48\x51\x68\xb3\xa7\x47\x56\xa8\x2e\xea\x8f\x2e\x53\xad\x46\x3f\xb0\x96\xe9\x7f\x14\x5c\x1d\xa3\x38\x0e\xb0\x56\xb0\xea\x70\x36\xd0\xea\x7e\xbf\x06\xd8\x7e\x51\xde\x9d\x91\x7b\x6e\xde\x77\x96\x73\x1a\x8a\x09\x4f\x6b\x9a\x22\xac\x09\x8b\x53\xca\x56\x60\x82\xa8\x27\x59\xde\xaa\x97\xfd\x4c\xde\x3e\x9e\x9e\xb5\x3d\xb6\x65\xac\x1f\x48\xc7\xf3\x33\xd1\xe5\x7b\x3b\x1b\x4d\x6c\x28\xa3\xaa\x46\x94\x53\x2f\xad\xf5\x5f\x85\x39\xef\x71\x45\xa5\x42\x31\x74\x70\x26\x26\x7a\x83\x32\x83\xb7\xf8\x34\x28\x32\xf5\x9f\xa2\xf4\xc6\x78\x88\xd6\x98\x11\xa7\xd0\xfd\x12\xc0\x56\xda\x7f\x02\x00\x00\xff\xff\x5b\xc5\x87\xdd\x8c\x2c\x00\x00") +var _cmdDefinitionsTmplServiceTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5a\x5b\x8f\xdb\xb8\x15\x7e\xf7\xaf\x38\x2b\x0c\x0a\x3b\x70\xa4\xdd\xa2\x2f\x9d\xc2\x0f\xed\x4c\x9a\x0e\x36\x97\x41\x26\xdb\x7d\xc8\x2e\x06\xb4\x74\x64\xb3\x96\x48\x85\xa4\x3d\x31\x5c\xfd\xf7\x82\x17\x5d\x4d\xc9\x76\xd2\xdd\x60\x81\xcc\x4b\x64\xf2\xf0\xf0\xf0\x5c\x3e\x7e\x24\x13\x45\x70\xc3\x13\x84\x15\x32\x14\x44\x61\x02\xcb\x3d\xac\x78\xfd\x1b\x76\x94\x40\x9c\x27\x51\x82\x29\x65\x54\x51\xce\xe4\xdf\xe0\xf6\x2d\xbc\x79\xfb\x1e\x5e\xdc\xde\xbd\x0f\x27\x05\x89\x37\x64\x85\x70\x38\x40\xf8\x86\xe4\x08\x65\x39\x99\xd0\xbc\xe0\x42\xc1\x74\x02\x00\x10\xc4\x9c\x29\xfc\xa4\x02\xfb\x8b\x72\xf7\xa1\x68\x8e\xc1\xc4\x7e\xaf\xa8\x5a\x6f\x97\x61\xcc\xf3\x68\x89\x7b\xce\x12\xa9\xb8\x20\x2b\x8c\x56\xfc\x79\xf5\xb9\xfb\x4b\x54\x6c\x56\xd1\x5a\xa9\x22\xce\x28\xb2\x4a\xe1\x99\x63\x25\x8a\x1d\x8d\x51\xda\x51\xe1\xd9\xe3\xd4\xbe\xd0\x83\x66\x93\xc9\x8e\x08\x78\x84\x07\xdb\x25\xdc\xcf\x4a\x6d\xf8\x60\x3f\x5e\x08\xc1\xab\xbe\xc6\xd4\xf0\x6d\x61\x9c\xe7\x3a\xf4\xd2\xc3\xdb\xad\x20\xba\x71\x32\x89\x22\x78\xbf\x2f\x10\xa8\x04\xb5\x46\xd0\x33\x42\xca\x45\xc7\xa7\x31\x67\x52\x59\xb1\x05\x04\xad\x9e\xc0\x8c\x7f\xbb\xfc\x0f\xc6\xea\x61\x2f\x15\xe6\xaf\x51\x91\x84\x28\x02\x7a\x15\x28\x41\x9a\x56\xc8\xab\x66\xad\x9a\x1b\xf9\x70\x62\xe6\x1a\x18\x2c\xb6\xb1\x82\xc3\xe4\x70\x78\x0e\x82\xb0\x15\xc2\xd5\xe3\x1c\xae\x76\x70\xbd\x80\xf0\x8e\xa5\x5c\x6a\xbb\xb4\x33\xb5\x04\x4d\x01\x3f\xc2\xd5\x2e\x7c\x88\x79\x81\x10\xd8\x09\x82\x9e\x08\xe3\x4a\xcb\xbc\xcc\xf8\x92\x64\xed\xbe\xab\x82\xe9\xe5\x5c\x2f\x74\xb7\x59\xd9\x7f\x41\xf1\x7b\x22\xe3\xae\x1c\x4d\xb5\xc0\x2d\x95\x45\x46\xf6\x95\x6f\xc0\xfd\xb5\x14\x2d\x06\xc4\xb4\x08\xb2\xa4\xf9\x69\xe4\x50\xc6\x82\x9a\x08\xb5\x3b\xac\xa6\xb2\x74\x52\xc6\xf7\x43\x6a\xea\x9f\xad\xcf\xd2\x44\xe6\x25\x2a\xaf\x7f\x9f\x68\x96\xc1\x0a\x95\xdf\xfb\xa9\xe0\xb9\xeb\x09\x27\x51\xa4\x15\x3d\x87\xf7\x6b\x2a\x21\xdd\xb2\xd8\x58\x2a\xd7\x7c\x9b\x25\xc6\xa5\x4b\x84\x98\x64\x99\xad\x5f\x97\x91\x40\xf3\x22\xc3\x1c\x99\x42\x11\x56\xe3\x11\x04\xaa\xad\x60\x94\xad\xaa\x79\xad\x74\x3d\x31\x95\x20\x90\x24\xc0\x59\xb6\x07\xc2\x92\xde\x34\x39\x4f\x68\x4a\x31\x09\x27\xda\x8e\xa1\xc5\x4d\x39\x3c\xb3\xed\x33\xff\xf2\x0e\xc6\x6d\x32\x9f\x03\xdf\xe8\xa0\xf3\xf0\x25\xf6\x75\xcc\x8c\x0c\x4d\xb5\xc8\xa1\x8e\xb1\xb5\x1f\x64\x1e\x4e\x7d\x9a\xed\x20\x1b\x15\x27\xea\x13\x3b\x54\xd1\x91\x63\xd1\x91\x43\xd1\xa1\x4c\xf1\xf3\xa2\x63\xdc\xd8\x84\x87\xb3\x18\xe7\x50\x64\x48\x24\x42\x4e\x36\x08\x72\x2b\x10\x48\x96\x81\x51\xbc\x26\x12\x96\x88\x0c\x9e\x04\x55\x0a\x19\x2c\x31\xe5\x02\xb5\x25\xce\xe3\x03\x06\x37\x1e\x9f\x83\xcc\xbd\x56\xcf\x9c\x17\x79\xf8\x70\xe4\x6b\x99\xcf\x9c\x43\x1c\xbc\x9d\x8f\x24\x0e\x2a\x4d\xa3\xc3\x93\x21\x1d\x5f\x04\x28\x6e\x9e\xa0\x5f\xf0\x43\xa8\xe2\x01\x85\x51\x74\xe9\xe9\x1c\x46\x99\x0b\xd0\xa6\x2d\xda\x82\x8b\xa6\x79\x00\x7d\xda\x02\x23\x28\x74\x39\x12\xf9\x23\x53\x43\x91\x0f\x84\xdc\x90\xd7\x26\xbc\x4d\xae\xb7\x91\xc4\xaf\xf5\x62\x24\xf1\xaa\x99\x4a\x78\xd6\x32\x61\x36\x30\x59\x1f\x50\xe4\xe7\x00\x8a\x57\xb5\x07\x51\xbc\x72\x6d\x48\x19\x71\xb3\x3c\x76\xb3\x41\x93\x01\x37\xff\x4e\x90\x72\x8e\xeb\x0d\xb0\xf8\x5d\x54\xb9\x7f\x18\x59\xbc\x35\x7f\x4f\xa8\x90\x55\xaa\xfa\xea\xf8\x9c\xda\x6d\xea\xf5\x86\xb3\x34\xa3\xb1\xd2\xad\x51\x04\xb7\x58\x08\x8c\x35\xab\xbd\x86\x9f\x24\x42\xa1\x67\x0b\x7f\xa6\x6a\xdd\x29\x2b\xca\xa4\x42\x92\x18\xa7\xb7\x4a\x26\x8a\xe0\x48\xd4\x04\x90\x14\x45\xb6\x77\xc5\xe8\x6a\x1d\x76\x24\xdb\x22\xe8\x3d\xc1\xd2\x3c\xa7\xcc\x53\xdd\xc6\xe1\x7d\xc5\xd3\x5d\xb7\xb8\x67\xa0\x3d\x73\x9c\xa3\xba\xb5\x69\xfc\x11\xf7\xd7\x86\x09\x36\x86\x04\xf3\xba\xf7\xdf\xda\xa4\x6b\xd8\xcd\x5d\xfa\x76\xf0\xa0\xf5\x69\x18\xa9\x76\xcd\x6b\x52\xc0\x02\x72\x52\x7c\x90\x4a\x50\xb6\xfa\xd5\xfe\xe3\xac\x18\x8f\xdf\x25\x38\xdb\xb3\xb8\x5e\x82\x5b\xbb\x5b\x42\x17\xbc\xbc\xb3\x6b\x0d\xb2\x20\x31\x76\x4c\x50\x98\x17\x99\x3e\xba\x04\x54\x33\x9f\x54\xf7\x07\xa6\x2e\x1e\x32\xcd\x8a\xaa\xa9\xaf\x76\xe1\x5d\x2d\xe0\x57\x90\x22\x51\x5b\x31\x38\xfc\x9f\x5b\x16\x4b\xf3\xe1\xe4\xfc\x5a\xb4\x6f\x1f\x19\x3e\xb5\xb5\x4c\x7d\xfe\x99\x99\x46\x7c\x1a\x56\xd3\xb3\xa4\x31\xc2\x6f\xbe\xc3\x8d\x71\xfb\x7b\xd9\xa0\xbf\xcd\x61\xaf\xe7\xc0\xa6\x18\xb5\xef\x29\x4b\xf0\x13\x84\xf0\x7d\xdd\x6e\x64\x65\xbb\xef\x07\xdd\xa7\x93\x6b\x3a\x98\x40\xd5\x28\x67\xfe\x63\xbb\xaa\x3a\x89\x03\x0b\xf8\x93\x2d\x98\x6e\xfb\xe1\x68\xd3\x9b\x0d\xae\xa6\x89\xe6\xd0\x5a\x8e\x71\xe5\x2a\x65\xc7\x6b\xb2\x1d\x9d\xf6\x3f\x9b\xd9\x0c\xf7\x71\x66\x96\x65\x9d\x15\x35\xef\x19\x74\x43\x2a\xcf\x3a\x8f\x78\x3d\xb3\xe4\x3c\x3b\xae\x98\x21\x27\x34\xc9\x78\x2a\xa0\x29\x3b\x5a\x78\xd5\xb1\xb1\x46\x33\x5f\x85\x6b\xdc\xd4\x93\xd4\x6e\xd0\x1f\x7a\x88\x46\x5a\x7b\xbc\x2d\x88\x90\x98\x38\xb7\x58\xa7\xf5\x46\xe8\x01\x65\xd9\x75\x9c\xc9\x7f\xf8\xf0\xab\xc6\x1c\x7b\x69\x10\x45\xf0\x0e\x3f\x6e\xa9\xc0\xc4\xf6\xfa\x1c\xac\x3b\x2a\x73\x6b\x69\xe7\xd3\x7f\x11\x69\x26\x25\x54\xf8\x3c\x0b\x6d\xdf\x8e\x89\x35\xdd\x23\x47\x44\x7d\x46\x37\x11\x25\xd9\x79\xd6\xd6\xd2\xff\x6f\x6b\x4f\xdb\x5b\x85\x51\x48\xbc\x1f\x88\xa5\xd9\x0a\x8d\x84\xdd\xab\xa4\x41\x17\xc3\x64\x9e\x0d\xc4\xdf\xee\x7d\x63\x5a\xa7\xbc\x50\x55\x8c\x67\x30\x1d\xd0\x33\x07\x14\x82\x8b\x8a\x74\x08\x94\xdb\x4c\x69\xaf\x0d\xc8\x37\x3b\xa6\xf1\xfb\x35\xe8\x59\xaa\x6d\xd1\xfc\xa3\x8f\x31\x8f\x73\x30\xc5\x68\xa3\x61\x0c\x69\x06\xca\x27\xaa\xe2\x35\xec\xc2\x1f\x71\xdf\x6a\xf6\x67\xe0\x85\x59\xa8\xff\x62\xcd\xdd\x82\x6e\xdc\xf4\xde\xd8\x39\x0c\xd0\xd4\xad\x35\x3c\x91\x0a\x87\xa3\xa3\x4a\xcc\x99\xa2\x6c\x8b\x9d\x8e\xee\x51\xe3\x3c\xd5\x0b\x50\xa2\xa7\xc6\x0d\x1c\x1f\xb5\x0b\x0d\x1f\x09\xa7\xfd\xd4\x9b\x0d\x1d\x64\x86\x6b\xe6\xc2\xba\xf9\xe6\xdf\x41\xff\x96\xed\x22\xb8\x20\x65\x69\x0a\xdf\x5d\xea\x2a\x47\x61\x87\x6a\xb4\x9c\x37\x37\xa9\xba\xfc\xab\x29\xcd\x75\xea\x41\x73\x5d\x79\xfd\xc1\x51\xd2\x83\x27\x94\x50\xd6\xab\xe9\x2d\xb6\x7d\x70\xb3\x46\xcf\x81\xd1\xec\xc4\x26\x79\x06\xe5\x31\xa7\x2b\xff\x1e\x59\xb8\x3d\xb2\x18\xdc\x23\x6f\x31\x25\xdb\x4c\x59\x57\x68\x0f\x58\x2e\x4d\xa5\xb6\x42\xf7\xb8\x0d\xcf\xdc\xb0\x14\x18\xd3\x94\xc6\x40\x0c\x9f\xb3\x5b\xe6\x80\x82\xd1\x4b\x16\x6b\xf2\x29\x46\xe1\xf6\xd8\xee\x7e\xe0\xc9\x90\x63\x95\xe0\x65\xad\x1d\xfa\x59\x30\xb8\xda\x8d\xde\x55\x1c\x85\xe2\x0b\xb8\xca\x78\x1c\x2e\xa6\x33\x9b\xcb\xf9\x4c\x6f\xc8\x09\x4a\xf3\x35\xc8\xcb\x79\xf4\xe5\x0f\x44\x54\x36\x9f\xc3\x54\x36\x1e\xaa\x32\x95\xf0\xac\xe9\x9d\x8d\x4e\x33\x48\x5d\x36\x97\x72\x97\xcd\xef\x44\x5e\xbe\x51\x94\x8b\xb7\x50\xaf\x9d\x9e\x7d\xf5\x1b\x3b\xf9\xcd\x5c\xeb\x76\xc7\x6b\xef\x95\x7d\xc1\xf4\x0a\xdc\xc1\xfb\x15\xe7\xb6\x5c\xfb\x97\xea\x51\x04\x99\xee\x7b\x34\x71\x71\xd7\x02\x1a\x10\x04\x4f\xb6\x31\x26\x40\x19\xbc\x7c\xb8\x7f\xfe\xc3\xf7\x7f\x0d\xfb\x03\xef\x52\xd8\x4a\x14\x80\x8c\x2c\x33\x04\x65\xee\x67\xad\x86\x9a\xc0\x54\xf7\xb4\x74\xc5\xb8\x40\x73\xa9\x29\xb7\x85\x79\x10\x37\x33\x1a\x04\x08\xfb\xc1\x95\x61\x75\x41\x11\x36\x96\x7f\x56\x2c\x07\x1e\x1b\x8e\x08\xd8\x66\x9c\x81\xfd\xc4\x9c\xd5\x15\x09\xd3\x8d\xd7\xbb\x01\xf6\x18\x45\x70\xb3\xc6\x78\x03\xa2\x73\x20\x0a\xbf\x0a\xb5\x3c\xb1\xb2\xaf\xc9\x2d\x5b\x97\x72\xdd\x7b\xd3\xb1\xab\xa8\x5a\xcc\x4f\x39\x3d\x2e\x1e\xe6\x66\xf6\xaa\xfc\x15\xef\xbd\x7c\x75\x69\x5b\xa6\xbb\x1f\x2b\x5b\x07\x09\x5c\xed\x8d\x4c\x1e\xbd\x49\x1d\xdf\x43\x9e\x56\x73\xea\x19\xcb\xeb\xc9\xcf\xa5\x87\xe7\x50\xbf\x16\x8d\xb0\x9f\xfd\xab\x39\xfb\x50\xd3\x7d\xa6\x31\x84\x23\x16\xa8\x17\x4f\xc0\xfd\xe7\x17\x58\xee\x2b\xec\x0a\xdb\xec\xe2\xaa\x60\x65\x39\x6b\x4d\x34\x35\xd7\x5f\xe1\x3d\x11\x24\x97\xe1\x83\x49\x4a\x2d\xe1\xda\xdf\x99\x2c\x6b\x77\xd8\x3a\x88\xd5\x27\xbd\x16\x37\x5b\xf8\x0f\x12\x6f\x56\x82\x6f\x59\xe2\x5e\xbd\xaa\x57\xae\xb0\x99\xe9\x67\xaa\xd6\x37\x56\x7e\x1a\xab\x4f\x73\xe8\xcc\x7c\x43\xb2\x0c\x85\x86\xe8\xbe\x2b\x5a\xe3\x06\xbc\x32\xb6\xbe\xde\xac\xb5\xc5\xae\xad\x67\xc5\xd9\xeb\x4f\x30\x45\x61\x62\x30\x9d\x75\x39\xce\x55\x41\xd4\xba\x8a\xb3\x53\x7b\x4f\xd4\xda\x2e\xd0\x53\x1e\x84\x25\x30\xc5\x8f\x6e\x60\x10\xcc\xdc\x2f\x06\x81\xfb\xcf\x12\xc1\xcc\xfb\x50\xab\xc5\x17\x10\xcc\x7f\x09\x7e\x09\x8e\x9e\xa9\x7b\x88\x8c\x42\xc0\x42\x83\x3e\x17\x39\x51\x06\x89\xa6\x81\x5d\xa2\xce\xc5\xb2\x0c\x0c\x55\x6c\x14\x97\x25\xb8\x97\xc8\xe9\xac\x29\x79\x9a\x02\x43\x4b\x2c\xcc\x8b\xff\x6b\x9e\x20\x04\x5d\x6c\xc9\x75\x5b\x45\x3f\x1a\xa9\x63\x88\xd1\xd8\xcb\x43\xdd\x19\xde\x19\xe8\x35\x23\xcb\x72\x3a\x6b\x81\xad\x33\xbc\xc2\xd3\x46\xe1\x1d\xdb\x91\x8c\x3a\x50\x7d\xf1\xa9\xc0\xd8\xbc\xbc\xe9\xae\x96\xae\x39\xfc\x3d\x56\x5b\x92\x5d\x83\x9d\xa9\xec\xa1\xf8\x08\xce\xda\xe3\xd2\x02\x48\x51\x20\x4b\x0c\xc5\x96\x73\x90\xa1\x2b\x2b\x73\xfe\x6d\xa5\x77\x18\x86\xd6\x61\x3b\x22\x34\x25\x1e\xba\x7a\xb0\xca\x79\xa1\xe6\x75\x50\x46\xef\x28\xcd\xbc\xf5\x53\xb2\x1e\xf2\xdd\x42\x83\xfe\xd1\x86\xd4\xde\x1e\x7b\xe5\xd7\xe0\xcd\x0d\xc9\x51\x07\xc0\x53\x81\xef\x05\xcd\x5f\x11\xa9\x5c\x29\xbe\x60\x89\x66\xf2\xeb\x1b\x9e\xe7\xa4\x2c\xb5\xc5\xb3\x91\x8d\xa6\x0f\xe1\x63\xbb\x4d\xbb\xcf\x07\x96\x55\x86\x9f\x00\x4c\xc7\x03\x4e\x82\xa6\x95\xab\xc4\x2f\x05\x4f\x3d\xec\x37\x00\xd0\x2f\xc9\xb0\xb3\xb3\xcc\x2d\xf9\xce\x32\x43\x43\x04\xe1\x69\x4d\x33\x84\x35\x61\x49\x46\xd9\x0a\x4c\xdc\xf4\x02\xdd\x43\x72\x35\xcc\x24\xe8\xe3\xd9\xe9\xd9\x27\x47\xc6\xee\x81\xd4\xbb\x38\xeb\x6c\x62\xb7\x33\xcf\x04\x84\x32\xaa\x6a\xac\x38\xf3\xc9\x56\xff\xd5\x60\xf2\x0e\x57\x54\x2a\x14\x43\x57\x53\x62\xaa\xcf\x0d\x73\x78\x83\x4f\x83\x22\x33\xdf\xed\xc5\xd1\x0c\x0f\xf1\x1a\x73\xe2\xd4\xb9\xd7\x6f\x5d\x4d\xff\x0b\x00\x00\xff\xff\xa4\x01\x31\xa6\x11\x2b\x00\x00") func cmdDefinitionsTmplServiceTmplBytes() ([]byte, error) { return bindataRead( @@ -318,7 +318,7 @@ func cmdDefinitionsTmplServiceTmpl() (*asset, error) { } info := bindataFileInfo{name: "cmd/definitions/tmpl/service.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbc, 0xc9, 0x49, 0x4a, 0xcf, 0xad, 0x2f, 0x3a, 0x74, 0x4, 0xd1, 0x39, 0xdc, 0x8b, 0x79, 0x31, 0x50, 0xb3, 0xf8, 0x44, 0x73, 0x48, 0x98, 0xf9, 0xd1, 0x86, 0xa6, 0xa4, 0xea, 0xa6, 0xc, 0xe6}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7f, 0x36, 0x30, 0xd8, 0xf7, 0x8e, 0x6f, 0xeb, 0x5f, 0x7e, 0x7b, 0x1, 0x64, 0x5, 0x51, 0x17, 0x9a, 0x74, 0x2f, 0xe5, 0x9c, 0x69, 0x30, 0x72, 0xc3, 0x1, 0x41, 0x62, 0x19, 0x54, 0x60, 0xb0}} return a, nil } diff --git a/cmd/definitions/tests/.gitignore b/cmd/definitions/tests/.gitignore deleted file mode 100644 index 6705ad623..000000000 --- a/cmd/definitions/tests/.gitignore +++ /dev/null @@ -1 +0,0 @@ -generated.go diff --git a/cmd/definitions/tests/connstr_test.go b/tests/connstr_test.go similarity index 100% rename from cmd/definitions/tests/connstr_test.go rename to tests/connstr_test.go diff --git a/cmd/definitions/tests/doc.go b/tests/doc.go similarity index 100% rename from cmd/definitions/tests/doc.go rename to tests/doc.go diff --git a/tests/generated.go b/tests/generated.go new file mode 100644 index 000000000..0f6b42362 --- /dev/null +++ b/tests/generated.go @@ -0,0 +1,1836 @@ +// Code generated by go generate via cmd/definitions; DO NOT EDIT. +package tests + +import ( + "context" + "io" + "time" + + "github.com/beyondstorage/go-storage/v4/pkg/httpclient" + "github.com/beyondstorage/go-storage/v4/services" + . "github.com/beyondstorage/go-storage/v4/types" +) + +var _ Storager +var _ services.ServiceError +var _ httpclient.Options +var _ time.Duration + +// Type is the type for tests +const Type = "tests" + +// ObjectSystemMetadata stores system metadata for object. +type ObjectSystemMetadata struct { + // StorageClass is the storage class for this object + StorageClass string +} + +// GetObjectSystemMetadata will get ObjectSystemMetadata from Object. +// +// - This function should not be called by service implementer. +// - The returning ObjectServiceMetadata is read only and should not be modified. +func GetObjectSystemMetadata(o *Object) ObjectSystemMetadata { + sm, ok := o.GetSystemMetadata() + if ok { + return sm.(ObjectSystemMetadata) + } + return ObjectSystemMetadata{} +} + +// setObjectSystemMetadata will set ObjectSystemMetadata into Object. +// +// - This function should only be called once, please make sure all data has been written before set. +func setObjectSystemMetadata(o *Object, sm ObjectSystemMetadata) { + o.SetSystemMetadata(sm) +} + +// StorageSystemMetadata stores system metadata for storage meta. +type StorageSystemMetadata struct { + // QueriesPerSecond tests storage system metadata + QueriesPerSecond int64 +} + +// GetStorageSystemMetadata will get SystemMetadata from StorageMeta. +// +// - The returning StorageSystemMetadata is read only and should not be modified. +func GetStorageSystemMetadata(s *StorageMeta) StorageSystemMetadata { + sm, ok := s.GetSystemMetadata() + if ok { + return sm.(StorageSystemMetadata) + } + return StorageSystemMetadata{} +} + +// setStorageSystemMetadata will set SystemMetadata into StorageMeta. +// +// - This function should only be called once, please make sure all data has been written before set. +func setStorageSystemMetadata(s *StorageMeta, sm StorageSystemMetadata) { + s.SetSystemMetadata(sm) +} + +// WithDefaultServicePairs will apply default_service_pairs value to Options. +// +// DefaultServicePairs set default pairs for service actions +func WithDefaultServicePairs(v DefaultServicePairs) Pair { + return Pair{ + Key: "default_service_pairs", + Value: v, + } +} + +// WithDefaultStoragePairs will apply default_storage_pairs value to Options. +// +// DefaultStoragePairs set default pairs for storager actions +func WithDefaultStoragePairs(v DefaultStoragePairs) Pair { + return Pair{ + Key: "default_storage_pairs", + Value: v, + } +} + +// WithDisableURICleaning will apply disable_uri_cleaning value to Options. +// +// DisableURICleaning +func WithDisableURICleaning(v bool) Pair { + return Pair{ + Key: "disable_uri_cleaning", + Value: v, + } +} + +// WithServiceFeatures will apply service_features value to Options. +// +// ServiceFeatures set service features +func WithServiceFeatures(v ServiceFeatures) Pair { + return Pair{ + Key: "service_features", + Value: v, + } +} + +// Deprecated: Use pairs.WithSize instead. +// +// WithSize will apply size value to Options. +// +// Size tests pair conflict +func WithSize(v int64) Pair { + return Pair{ + Key: "size", + Value: v, + } +} + +// WithStorageClass will apply storage_class value to Options. +// +// StorageClass +func WithStorageClass(v string) Pair { + return Pair{ + Key: "storage_class", + Value: v, + } +} + +// WithStorageFeatures will apply storage_features value to Options. +// +// StorageFeatures set storage features +func WithStorageFeatures(v StorageFeatures) Pair { + return Pair{ + Key: "storage_features", + Value: v, + } +} + +// WithStringPair will apply string_pair value to Options. +// +// StringPair tests connection string +func WithStringPair(v string) Pair { + return Pair{ + Key: "string_pair", + Value: v, + } +} + +var pairMap = map[string]string{ + "content_md5": "string", + "content_type": "string", + "context": "context.Context", + "continuation_token": "string", + "credential": "string", + "default_service_pairs": "DefaultServicePairs", + "default_storage_pairs": "DefaultStoragePairs", + "disable_uri_cleaning": "bool", + "endpoint": "string", + "expire": "time.Duration", + "http_client_options": "*httpclient.Options", + "interceptor": "Interceptor", + "io_callback": "func([]byte)", + "list_mode": "ListMode", + "location": "string", + "multipart_id": "string", + "name": "string", + "object_mode": "ObjectMode", + "offset": "int64", + "service_features": "ServiceFeatures", + "size": "int64", + "storage_class": "string", + "storage_features": "StorageFeatures", + "string_pair": "string", + "work_dir": "string", +} +var ( + _ Servicer = &Service{} +) + +type ServiceFeatures struct { +} + +// pairServiceNew is the parsed struct +type pairServiceNew struct { + pairs []Pair + + // Required pairs + HasCredential bool + Credential string + // Optional pairs + HasDefaultServicePairs bool + DefaultServicePairs DefaultServicePairs + HasEndpoint bool + Endpoint string + HasHTTPClientOptions bool + HTTPClientOptions *httpclient.Options + HasServiceFeatures bool + ServiceFeatures ServiceFeatures +} + +// parsePairServiceNew will parse Pair slice into *pairServiceNew +func parsePairServiceNew(opts []Pair) (pairServiceNew, error) { + result := pairServiceNew{ + pairs: opts, + } + + for _, v := range opts { + switch v.Key { + // Required pairs + case "credential": + if result.HasCredential { + continue + } + result.HasCredential = true + result.Credential = v.Value.(string) + // Optional pairs + case "default_service_pairs": + if result.HasDefaultServicePairs { + continue + } + result.HasDefaultServicePairs = true + result.DefaultServicePairs = v.Value.(DefaultServicePairs) + case "endpoint": + if result.HasEndpoint { + continue + } + result.HasEndpoint = true + result.Endpoint = v.Value.(string) + case "http_client_options": + if result.HasHTTPClientOptions { + continue + } + result.HasHTTPClientOptions = true + result.HTTPClientOptions = v.Value.(*httpclient.Options) + case "service_features": + if result.HasServiceFeatures { + continue + } + result.HasServiceFeatures = true + result.ServiceFeatures = v.Value.(ServiceFeatures) + } + } + if !result.HasCredential { + return pairServiceNew{}, services.PairRequiredError{Keys: []string{"credential"}} + } + + return result, nil +} + +// DefaultServicePairs is default pairs for specific action +type DefaultServicePairs struct { + Create []Pair + Delete []Pair + Get []Pair + List []Pair +} + +// pairServiceCreate is the parsed struct +type pairServiceCreate struct { + pairs []Pair + HasLocation bool + Location string +} + +// parsePairServiceCreate will parse Pair slice into *pairServiceCreate +func (s *Service) parsePairServiceCreate(opts []Pair) (pairServiceCreate, error) { + result := pairServiceCreate{ + pairs: opts, + } + + for _, v := range opts { + switch v.Key { + case "location": + if result.HasLocation { + continue + } + result.HasLocation = true + result.Location = v.Value.(string) + continue + default: + return pairServiceCreate{}, services.PairUnsupportedError{Pair: v} + } + } + + // Check required pairs. + if !result.HasLocation { + return pairServiceCreate{}, services.PairRequiredError{Keys: []string{"location"}} + } + + return result, nil +} + +// pairServiceDelete is the parsed struct +type pairServiceDelete struct { + pairs []Pair + HasLocation bool + Location string +} + +// parsePairServiceDelete will parse Pair slice into *pairServiceDelete +func (s *Service) parsePairServiceDelete(opts []Pair) (pairServiceDelete, error) { + result := pairServiceDelete{ + pairs: opts, + } + + for _, v := range opts { + switch v.Key { + case "location": + if result.HasLocation { + continue + } + result.HasLocation = true + result.Location = v.Value.(string) + continue + default: + return pairServiceDelete{}, services.PairUnsupportedError{Pair: v} + } + } + + // Check required pairs. + + return result, nil +} + +// pairServiceGet is the parsed struct +type pairServiceGet struct { + pairs []Pair + HasLocation bool + Location string +} + +// parsePairServiceGet will parse Pair slice into *pairServiceGet +func (s *Service) parsePairServiceGet(opts []Pair) (pairServiceGet, error) { + result := pairServiceGet{ + pairs: opts, + } + + for _, v := range opts { + switch v.Key { + case "location": + if result.HasLocation { + continue + } + result.HasLocation = true + result.Location = v.Value.(string) + continue + default: + return pairServiceGet{}, services.PairUnsupportedError{Pair: v} + } + } + + // Check required pairs. + + return result, nil +} + +// pairServiceList is the parsed struct +type pairServiceList struct { + pairs []Pair + HasLocation bool + Location string +} + +// parsePairServiceList will parse Pair slice into *pairServiceList +func (s *Service) parsePairServiceList(opts []Pair) (pairServiceList, error) { + result := pairServiceList{ + pairs: opts, + } + + for _, v := range opts { + switch v.Key { + case "location": + if result.HasLocation { + continue + } + result.HasLocation = true + result.Location = v.Value.(string) + continue + default: + return pairServiceList{}, services.PairUnsupportedError{Pair: v} + } + } + + // Check required pairs. + + return result, nil +} + +// Create will create a new storager instance. +// +// This function will create a context by default. +func (s *Service) Create(name string, pairs ...Pair) (store Storager, err error) { + ctx := context.Background() + return s.CreateWithContext(ctx, name, pairs...) +} + +// CreateWithContext will create a new storager instance. +func (s *Service) CreateWithContext(ctx context.Context, name string, pairs ...Pair) (store Storager, err error) { + defer func() { + err = s.formatError("create", err, name) + }() + + pairs = append(pairs, s.defaultPairs.Create...) + var opt pairServiceCreate + + opt, err = s.parsePairServiceCreate(pairs) + if err != nil { + return + } + + return s.create(ctx, name, opt) +} + +// Delete will delete a storager instance. +// +// This function will create a context by default. +func (s *Service) Delete(name string, pairs ...Pair) (err error) { + ctx := context.Background() + return s.DeleteWithContext(ctx, name, pairs...) +} + +// DeleteWithContext will delete a storager instance. +func (s *Service) DeleteWithContext(ctx context.Context, name string, pairs ...Pair) (err error) { + defer func() { + err = s.formatError("delete", err, name) + }() + + pairs = append(pairs, s.defaultPairs.Delete...) + var opt pairServiceDelete + + opt, err = s.parsePairServiceDelete(pairs) + if err != nil { + return + } + + return s.delete(ctx, name, opt) +} + +// Get will get a valid storager instance for service. +// +// This function will create a context by default. +func (s *Service) Get(name string, pairs ...Pair) (store Storager, err error) { + ctx := context.Background() + return s.GetWithContext(ctx, name, pairs...) +} + +// GetWithContext will get a valid storager instance for service. +func (s *Service) GetWithContext(ctx context.Context, name string, pairs ...Pair) (store Storager, err error) { + defer func() { + err = s.formatError("get", err, name) + }() + + pairs = append(pairs, s.defaultPairs.Get...) + var opt pairServiceGet + + opt, err = s.parsePairServiceGet(pairs) + if err != nil { + return + } + + return s.get(ctx, name, opt) +} + +// List will list all storager instances under this service. +// +// This function will create a context by default. +func (s *Service) List(pairs ...Pair) (sti *StoragerIterator, err error) { + ctx := context.Background() + return s.ListWithContext(ctx, pairs...) +} + +// ListWithContext will list all storager instances under this service. +func (s *Service) ListWithContext(ctx context.Context, pairs ...Pair) (sti *StoragerIterator, err error) { + defer func() { + + err = s.formatError("list", err, "") + }() + + pairs = append(pairs, s.defaultPairs.List...) + var opt pairServiceList + + opt, err = s.parsePairServiceList(pairs) + if err != nil { + return + } + + return s.list(ctx, opt) +} + +var ( + _ Appender = &Storage{} + _ Copier = &Storage{} + _ Fetcher = &Storage{} + _ Mover = &Storage{} + _ Multiparter = &Storage{} + _ Reacher = &Storage{} + _ Storager = &Storage{} +) + +type StorageFeatures struct { + // LoosePair loose_pair feature is designed for users who don't want strict pair checks. + // + // If this feature is enabled, the service will not return an error for not support pairs. + // + // This feature was introduced in GSP-109. + LoosePair bool + // VirtualDir virtual_dir feature is designed for a service that doesn't have native dir support but wants to provide simulated operations. + // + // - If this feature is disabled (the default behavior), the service will behave like it doesn't have any dir support. + // - If this feature is enabled, the service will support simulated dir behavior in create_dir, create, list, delete, and so on. + // + // This feature was introduced in GSP-109. + VirtualDir bool +} + +// pairStorageNew is the parsed struct +type pairStorageNew struct { + pairs []Pair + + // Required pairs + HasName bool + Name string + // Optional pairs + HasDefaultStoragePairs bool + DefaultStoragePairs DefaultStoragePairs + HasDisableURICleaning bool + DisableURICleaning bool + HasHTTPClientOptions bool + HTTPClientOptions *httpclient.Options + HasLocation bool + Location string + HasStorageFeatures bool + StorageFeatures StorageFeatures + HasWorkDir bool + WorkDir string +} + +// parsePairStorageNew will parse Pair slice into *pairStorageNew +func parsePairStorageNew(opts []Pair) (pairStorageNew, error) { + result := pairStorageNew{ + pairs: opts, + } + + for _, v := range opts { + switch v.Key { + // Required pairs + case "name": + if result.HasName { + continue + } + result.HasName = true + result.Name = v.Value.(string) + // Optional pairs + case "default_storage_pairs": + if result.HasDefaultStoragePairs { + continue + } + result.HasDefaultStoragePairs = true + result.DefaultStoragePairs = v.Value.(DefaultStoragePairs) + case "disable_uri_cleaning": + if result.HasDisableURICleaning { + continue + } + result.HasDisableURICleaning = true + result.DisableURICleaning = v.Value.(bool) + case "http_client_options": + if result.HasHTTPClientOptions { + continue + } + result.HasHTTPClientOptions = true + result.HTTPClientOptions = v.Value.(*httpclient.Options) + case "location": + if result.HasLocation { + continue + } + result.HasLocation = true + result.Location = v.Value.(string) + case "storage_features": + if result.HasStorageFeatures { + continue + } + result.HasStorageFeatures = true + result.StorageFeatures = v.Value.(StorageFeatures) + case "work_dir": + if result.HasWorkDir { + continue + } + result.HasWorkDir = true + result.WorkDir = v.Value.(string) + } + } + if !result.HasName { + return pairStorageNew{}, services.PairRequiredError{Keys: []string{"name"}} + } + + return result, nil +} + +// DefaultStoragePairs is default pairs for specific action +type DefaultStoragePairs struct { + CommitAppend []Pair + CompleteMultipart []Pair + Copy []Pair + Create []Pair + CreateAppend []Pair + CreateMultipart []Pair + Delete []Pair + Fetch []Pair + List []Pair + ListMultipart []Pair + Metadata []Pair + Move []Pair + Reach []Pair + Read []Pair + Stat []Pair + Write []Pair + WriteAppend []Pair + WriteMultipart []Pair +} + +// pairStorageCommitAppend is the parsed struct +type pairStorageCommitAppend struct { + pairs []Pair +} + +// parsePairStorageCommitAppend will parse Pair slice into *pairStorageCommitAppend +func (s *Storage) parsePairStorageCommitAppend(opts []Pair) (pairStorageCommitAppend, error) { + result := pairStorageCommitAppend{ + pairs: opts, + } + + for _, v := range opts { + switch v.Key { + default: + // loose_pair feature introduced in GSP-109. + // If user enable this feature, service should ignore not support pair error. + if s.features.LoosePair { + continue + } + return pairStorageCommitAppend{}, services.PairUnsupportedError{Pair: v} + } + } + + // Check required pairs. + + return result, nil +} + +// pairStorageCompleteMultipart is the parsed struct +type pairStorageCompleteMultipart struct { + pairs []Pair +} + +// parsePairStorageCompleteMultipart will parse Pair slice into *pairStorageCompleteMultipart +func (s *Storage) parsePairStorageCompleteMultipart(opts []Pair) (pairStorageCompleteMultipart, error) { + result := pairStorageCompleteMultipart{ + pairs: opts, + } + + for _, v := range opts { + switch v.Key { + default: + // loose_pair feature introduced in GSP-109. + // If user enable this feature, service should ignore not support pair error. + if s.features.LoosePair { + continue + } + return pairStorageCompleteMultipart{}, services.PairUnsupportedError{Pair: v} + } + } + + // Check required pairs. + + return result, nil +} + +// pairStorageCopy is the parsed struct +type pairStorageCopy struct { + pairs []Pair +} + +// parsePairStorageCopy will parse Pair slice into *pairStorageCopy +func (s *Storage) parsePairStorageCopy(opts []Pair) (pairStorageCopy, error) { + result := pairStorageCopy{ + pairs: opts, + } + + for _, v := range opts { + switch v.Key { + default: + // loose_pair feature introduced in GSP-109. + // If user enable this feature, service should ignore not support pair error. + if s.features.LoosePair { + continue + } + return pairStorageCopy{}, services.PairUnsupportedError{Pair: v} + } + } + + // Check required pairs. + + return result, nil +} + +// pairStorageCreate is the parsed struct +type pairStorageCreate struct { + pairs []Pair + HasObjectMode bool + ObjectMode ObjectMode +} + +// parsePairStorageCreate will parse Pair slice into *pairStorageCreate +func (s *Storage) parsePairStorageCreate(opts []Pair) (pairStorageCreate, error) { + result := pairStorageCreate{ + pairs: opts, + } + + for _, v := range opts { + switch v.Key { + case "object_mode": + if result.HasObjectMode { + continue + } + result.HasObjectMode = true + result.ObjectMode = v.Value.(ObjectMode) + continue + default: + // loose_pair feature introduced in GSP-109. + // If user enable this feature, service should ignore not support pair error. + if s.features.LoosePair { + continue + } + return pairStorageCreate{}, services.PairUnsupportedError{Pair: v} + } + } + + // Check required pairs. + + return result, nil +} + +// pairStorageCreateAppend is the parsed struct +type pairStorageCreateAppend struct { + pairs []Pair +} + +// parsePairStorageCreateAppend will parse Pair slice into *pairStorageCreateAppend +func (s *Storage) parsePairStorageCreateAppend(opts []Pair) (pairStorageCreateAppend, error) { + result := pairStorageCreateAppend{ + pairs: opts, + } + + for _, v := range opts { + switch v.Key { + default: + // loose_pair feature introduced in GSP-109. + // If user enable this feature, service should ignore not support pair error. + if s.features.LoosePair { + continue + } + return pairStorageCreateAppend{}, services.PairUnsupportedError{Pair: v} + } + } + + // Check required pairs. + + return result, nil +} + +// pairStorageCreateMultipart is the parsed struct +type pairStorageCreateMultipart struct { + pairs []Pair +} + +// parsePairStorageCreateMultipart will parse Pair slice into *pairStorageCreateMultipart +func (s *Storage) parsePairStorageCreateMultipart(opts []Pair) (pairStorageCreateMultipart, error) { + result := pairStorageCreateMultipart{ + pairs: opts, + } + + for _, v := range opts { + switch v.Key { + default: + // loose_pair feature introduced in GSP-109. + // If user enable this feature, service should ignore not support pair error. + if s.features.LoosePair { + continue + } + return pairStorageCreateMultipart{}, services.PairUnsupportedError{Pair: v} + } + } + + // Check required pairs. + + return result, nil +} + +// pairStorageDelete is the parsed struct +type pairStorageDelete struct { + pairs []Pair + HasMultipartID bool + MultipartID string + HasObjectMode bool + ObjectMode ObjectMode +} + +// parsePairStorageDelete will parse Pair slice into *pairStorageDelete +func (s *Storage) parsePairStorageDelete(opts []Pair) (pairStorageDelete, error) { + result := pairStorageDelete{ + pairs: opts, + } + + for _, v := range opts { + switch v.Key { + case "multipart_id": + if result.HasMultipartID { + continue + } + result.HasMultipartID = true + result.MultipartID = v.Value.(string) + continue + case "object_mode": + if result.HasObjectMode { + continue + } + result.HasObjectMode = true + result.ObjectMode = v.Value.(ObjectMode) + continue + default: + // loose_pair feature introduced in GSP-109. + // If user enable this feature, service should ignore not support pair error. + if s.features.LoosePair { + continue + } + return pairStorageDelete{}, services.PairUnsupportedError{Pair: v} + } + } + + // Check required pairs. + + return result, nil +} + +// pairStorageFetch is the parsed struct +type pairStorageFetch struct { + pairs []Pair +} + +// parsePairStorageFetch will parse Pair slice into *pairStorageFetch +func (s *Storage) parsePairStorageFetch(opts []Pair) (pairStorageFetch, error) { + result := pairStorageFetch{ + pairs: opts, + } + + for _, v := range opts { + switch v.Key { + default: + // loose_pair feature introduced in GSP-109. + // If user enable this feature, service should ignore not support pair error. + if s.features.LoosePair { + continue + } + return pairStorageFetch{}, services.PairUnsupportedError{Pair: v} + } + } + + // Check required pairs. + + return result, nil +} + +// pairStorageList is the parsed struct +type pairStorageList struct { + pairs []Pair + HasListMode bool + ListMode ListMode +} + +// parsePairStorageList will parse Pair slice into *pairStorageList +func (s *Storage) parsePairStorageList(opts []Pair) (pairStorageList, error) { + result := pairStorageList{ + pairs: opts, + } + + for _, v := range opts { + switch v.Key { + case "list_mode": + if result.HasListMode { + continue + } + result.HasListMode = true + result.ListMode = v.Value.(ListMode) + continue + default: + // loose_pair feature introduced in GSP-109. + // If user enable this feature, service should ignore not support pair error. + if s.features.LoosePair { + continue + } + return pairStorageList{}, services.PairUnsupportedError{Pair: v} + } + } + + // Check required pairs. + + return result, nil +} + +// pairStorageListMultipart is the parsed struct +type pairStorageListMultipart struct { + pairs []Pair +} + +// parsePairStorageListMultipart will parse Pair slice into *pairStorageListMultipart +func (s *Storage) parsePairStorageListMultipart(opts []Pair) (pairStorageListMultipart, error) { + result := pairStorageListMultipart{ + pairs: opts, + } + + for _, v := range opts { + switch v.Key { + default: + // loose_pair feature introduced in GSP-109. + // If user enable this feature, service should ignore not support pair error. + if s.features.LoosePair { + continue + } + return pairStorageListMultipart{}, services.PairUnsupportedError{Pair: v} + } + } + + // Check required pairs. + + return result, nil +} + +// pairStorageMetadata is the parsed struct +type pairStorageMetadata struct { + pairs []Pair +} + +// parsePairStorageMetadata will parse Pair slice into *pairStorageMetadata +func (s *Storage) parsePairStorageMetadata(opts []Pair) (pairStorageMetadata, error) { + result := pairStorageMetadata{ + pairs: opts, + } + + for _, v := range opts { + switch v.Key { + default: + // loose_pair feature introduced in GSP-109. + // If user enable this feature, service should ignore not support pair error. + if s.features.LoosePair { + continue + } + return pairStorageMetadata{}, services.PairUnsupportedError{Pair: v} + } + } + + // Check required pairs. + + return result, nil +} + +// pairStorageMove is the parsed struct +type pairStorageMove struct { + pairs []Pair +} + +// parsePairStorageMove will parse Pair slice into *pairStorageMove +func (s *Storage) parsePairStorageMove(opts []Pair) (pairStorageMove, error) { + result := pairStorageMove{ + pairs: opts, + } + + for _, v := range opts { + switch v.Key { + default: + // loose_pair feature introduced in GSP-109. + // If user enable this feature, service should ignore not support pair error. + if s.features.LoosePair { + continue + } + return pairStorageMove{}, services.PairUnsupportedError{Pair: v} + } + } + + // Check required pairs. + + return result, nil +} + +// pairStorageReach is the parsed struct +type pairStorageReach struct { + pairs []Pair + HasExpire bool + Expire time.Duration +} + +// parsePairStorageReach will parse Pair slice into *pairStorageReach +func (s *Storage) parsePairStorageReach(opts []Pair) (pairStorageReach, error) { + result := pairStorageReach{ + pairs: opts, + } + + for _, v := range opts { + switch v.Key { + case "expire": + if result.HasExpire { + continue + } + result.HasExpire = true + result.Expire = v.Value.(time.Duration) + continue + default: + // loose_pair feature introduced in GSP-109. + // If user enable this feature, service should ignore not support pair error. + if s.features.LoosePair { + continue + } + return pairStorageReach{}, services.PairUnsupportedError{Pair: v} + } + } + + // Check required pairs. + if !result.HasExpire { + return pairStorageReach{}, services.PairRequiredError{Keys: []string{"expire"}} + } + + return result, nil +} + +// pairStorageRead is the parsed struct +type pairStorageRead struct { + pairs []Pair + HasIoCallback bool + IoCallback func([]byte) + HasOffset bool + Offset int64 + HasSize bool + Size int64 +} + +// parsePairStorageRead will parse Pair slice into *pairStorageRead +func (s *Storage) parsePairStorageRead(opts []Pair) (pairStorageRead, error) { + result := pairStorageRead{ + pairs: opts, + } + + for _, v := range opts { + switch v.Key { + case "io_callback": + if result.HasIoCallback { + continue + } + result.HasIoCallback = true + result.IoCallback = v.Value.(func([]byte)) + continue + case "offset": + if result.HasOffset { + continue + } + result.HasOffset = true + result.Offset = v.Value.(int64) + continue + case "size": + if result.HasSize { + continue + } + result.HasSize = true + result.Size = v.Value.(int64) + continue + default: + // loose_pair feature introduced in GSP-109. + // If user enable this feature, service should ignore not support pair error. + if s.features.LoosePair { + continue + } + return pairStorageRead{}, services.PairUnsupportedError{Pair: v} + } + } + + // Check required pairs. + + return result, nil +} + +// pairStorageStat is the parsed struct +type pairStorageStat struct { + pairs []Pair + HasObjectMode bool + ObjectMode ObjectMode +} + +// parsePairStorageStat will parse Pair slice into *pairStorageStat +func (s *Storage) parsePairStorageStat(opts []Pair) (pairStorageStat, error) { + result := pairStorageStat{ + pairs: opts, + } + + for _, v := range opts { + switch v.Key { + case "object_mode": + if result.HasObjectMode { + continue + } + result.HasObjectMode = true + result.ObjectMode = v.Value.(ObjectMode) + continue + default: + // loose_pair feature introduced in GSP-109. + // If user enable this feature, service should ignore not support pair error. + if s.features.LoosePair { + continue + } + return pairStorageStat{}, services.PairUnsupportedError{Pair: v} + } + } + + // Check required pairs. + + return result, nil +} + +// pairStorageWrite is the parsed struct +type pairStorageWrite struct { + pairs []Pair + HasContentMd5 bool + ContentMd5 string + HasContentType bool + ContentType string + HasIoCallback bool + IoCallback func([]byte) + HasStorageClass bool + StorageClass string +} + +// parsePairStorageWrite will parse Pair slice into *pairStorageWrite +func (s *Storage) parsePairStorageWrite(opts []Pair) (pairStorageWrite, error) { + result := pairStorageWrite{ + pairs: opts, + } + + for _, v := range opts { + switch v.Key { + case "content_md5": + if result.HasContentMd5 { + continue + } + result.HasContentMd5 = true + result.ContentMd5 = v.Value.(string) + continue + case "content_type": + if result.HasContentType { + continue + } + result.HasContentType = true + result.ContentType = v.Value.(string) + continue + case "io_callback": + if result.HasIoCallback { + continue + } + result.HasIoCallback = true + result.IoCallback = v.Value.(func([]byte)) + continue + case "storage_class": + if result.HasStorageClass { + continue + } + result.HasStorageClass = true + result.StorageClass = v.Value.(string) + continue + default: + // loose_pair feature introduced in GSP-109. + // If user enable this feature, service should ignore not support pair error. + if s.features.LoosePair { + continue + } + return pairStorageWrite{}, services.PairUnsupportedError{Pair: v} + } + } + + // Check required pairs. + + return result, nil +} + +// pairStorageWriteAppend is the parsed struct +type pairStorageWriteAppend struct { + pairs []Pair +} + +// parsePairStorageWriteAppend will parse Pair slice into *pairStorageWriteAppend +func (s *Storage) parsePairStorageWriteAppend(opts []Pair) (pairStorageWriteAppend, error) { + result := pairStorageWriteAppend{ + pairs: opts, + } + + for _, v := range opts { + switch v.Key { + default: + // loose_pair feature introduced in GSP-109. + // If user enable this feature, service should ignore not support pair error. + if s.features.LoosePair { + continue + } + return pairStorageWriteAppend{}, services.PairUnsupportedError{Pair: v} + } + } + + // Check required pairs. + + return result, nil +} + +// pairStorageWriteMultipart is the parsed struct +type pairStorageWriteMultipart struct { + pairs []Pair +} + +// parsePairStorageWriteMultipart will parse Pair slice into *pairStorageWriteMultipart +func (s *Storage) parsePairStorageWriteMultipart(opts []Pair) (pairStorageWriteMultipart, error) { + result := pairStorageWriteMultipart{ + pairs: opts, + } + + for _, v := range opts { + switch v.Key { + default: + // loose_pair feature introduced in GSP-109. + // If user enable this feature, service should ignore not support pair error. + if s.features.LoosePair { + continue + } + return pairStorageWriteMultipart{}, services.PairUnsupportedError{Pair: v} + } + } + + // Check required pairs. + + return result, nil +} + +// CommitAppend will commit and finish an append process. +// +// This function will create a context by default. +func (s *Storage) CommitAppend(o *Object, pairs ...Pair) (err error) { + ctx := context.Background() + return s.CommitAppendWithContext(ctx, o, pairs...) +} + +// CommitAppendWithContext will commit and finish an append process. +func (s *Storage) CommitAppendWithContext(ctx context.Context, o *Object, pairs ...Pair) (err error) { + defer func() { + err = s.formatError("commit_append", err) + }() + if !o.Mode.IsAppend() { + err = services.ObjectModeInvalidError{Expected: ModeAppend, Actual: o.Mode} + return + } + + pairs = append(pairs, s.defaultPairs.CommitAppend...) + var opt pairStorageCommitAppend + + opt, err = s.parsePairStorageCommitAppend(pairs) + if err != nil { + return + } + + return s.commitAppend(ctx, o, opt) +} + +// CompleteMultipart will complete a multipart upload and construct an Object. +// +// This function will create a context by default. +func (s *Storage) CompleteMultipart(o *Object, parts []*Part, pairs ...Pair) (err error) { + ctx := context.Background() + return s.CompleteMultipartWithContext(ctx, o, parts, pairs...) +} + +// CompleteMultipartWithContext will complete a multipart upload and construct an Object. +func (s *Storage) CompleteMultipartWithContext(ctx context.Context, o *Object, parts []*Part, pairs ...Pair) (err error) { + defer func() { + err = s.formatError("complete_multipart", err) + }() + if !o.Mode.IsPart() { + err = services.ObjectModeInvalidError{Expected: ModePart, Actual: o.Mode} + return + } + + pairs = append(pairs, s.defaultPairs.CompleteMultipart...) + var opt pairStorageCompleteMultipart + + opt, err = s.parsePairStorageCompleteMultipart(pairs) + if err != nil { + return + } + + return s.completeMultipart(ctx, o, parts, opt) +} + +// Copy will copy an Object or multiple object in the service. +// +// ## Behavior +// +// - Copy only copy one and only one object. +// - Service DON'T NEED to support copy a non-empty directory or copy files recursively. +// - User NEED to implement copy a non-empty directory and copy recursively by themself. +// - Copy a file to a directory SHOULD return `ErrObjectModeInvalid`. +// - Copy SHOULD NOT return an error as dst object exists. +// - Service that has native support for `overwrite` doesn't NEED to check the dst object exists or not. +// - Service that doesn't have native support for `overwrite` SHOULD check and delete the dst object if exists. +// - A successful copy opration should be complete, which means the dst object's content and metadata should be the same as src object. +// +// This function will create a context by default. +func (s *Storage) Copy(src string, dst string, pairs ...Pair) (err error) { + ctx := context.Background() + return s.CopyWithContext(ctx, src, dst, pairs...) +} + +// CopyWithContext will copy an Object or multiple object in the service. +// +// ## Behavior +// +// - Copy only copy one and only one object. +// - Service DON'T NEED to support copy a non-empty directory or copy files recursively. +// - User NEED to implement copy a non-empty directory and copy recursively by themself. +// - Copy a file to a directory SHOULD return `ErrObjectModeInvalid`. +// - Copy SHOULD NOT return an error as dst object exists. +// - Service that has native support for `overwrite` doesn't NEED to check the dst object exists or not. +// - Service that doesn't have native support for `overwrite` SHOULD check and delete the dst object if exists. +// - A successful copy opration should be complete, which means the dst object's content and metadata should be the same as src object. +func (s *Storage) CopyWithContext(ctx context.Context, src string, dst string, pairs ...Pair) (err error) { + defer func() { + err = s.formatError("copy", err, src, dst) + }() + + pairs = append(pairs, s.defaultPairs.Copy...) + var opt pairStorageCopy + + opt, err = s.parsePairStorageCopy(pairs) + if err != nil { + return + } + + return s.copy(ctx, src, dst, opt) +} + +// Create will create a new object without any api call. +// +// ## Behavior +// +// - Create SHOULD NOT send any API call. +// - Create SHOULD accept ObjectMode pair as object mode. +// +// This function will create a context by default. +func (s *Storage) Create(path string, pairs ...Pair) (o *Object) { + pairs = append(pairs, s.defaultPairs.Create...) + var opt pairStorageCreate + + // Ignore error while handling local funtions. + opt, _ = s.parsePairStorageCreate(pairs) + + return s.create(path, opt) +} + +// CreateAppend will create an append object. +// +// ## Behavior +// +// - CreateAppend SHOULD create an appendable object with position 0 and size 0. +// - CreateAppend SHOULD NOT return an error as the object exist. +// - Service SHOULD check and delete the object if exists. +// +// This function will create a context by default. +func (s *Storage) CreateAppend(path string, pairs ...Pair) (o *Object, err error) { + ctx := context.Background() + return s.CreateAppendWithContext(ctx, path, pairs...) +} + +// CreateAppendWithContext will create an append object. +// +// ## Behavior +// +// - CreateAppend SHOULD create an appendable object with position 0 and size 0. +// - CreateAppend SHOULD NOT return an error as the object exist. +// - Service SHOULD check and delete the object if exists. +func (s *Storage) CreateAppendWithContext(ctx context.Context, path string, pairs ...Pair) (o *Object, err error) { + defer func() { + err = s.formatError("create_append", err, path) + }() + + pairs = append(pairs, s.defaultPairs.CreateAppend...) + var opt pairStorageCreateAppend + + opt, err = s.parsePairStorageCreateAppend(pairs) + if err != nil { + return + } + + return s.createAppend(ctx, path, opt) +} + +// CreateMultipart will create a new multipart. +// +// ## Behavior +// +// - CreateMultipart SHOULD NOT return an error as the object exists. +// +// This function will create a context by default. +func (s *Storage) CreateMultipart(path string, pairs ...Pair) (o *Object, err error) { + ctx := context.Background() + return s.CreateMultipartWithContext(ctx, path, pairs...) +} + +// CreateMultipartWithContext will create a new multipart. +// +// ## Behavior +// +// - CreateMultipart SHOULD NOT return an error as the object exists. +func (s *Storage) CreateMultipartWithContext(ctx context.Context, path string, pairs ...Pair) (o *Object, err error) { + defer func() { + err = s.formatError("create_multipart", err, path) + }() + + pairs = append(pairs, s.defaultPairs.CreateMultipart...) + var opt pairStorageCreateMultipart + + opt, err = s.parsePairStorageCreateMultipart(pairs) + if err != nil { + return + } + + return s.createMultipart(ctx, path, opt) +} + +// Delete will delete an object from service. +// +// ## Behavior +// +// - Delete only delete one and only one object. +// - Service DON'T NEED to support remove all. +// - User NEED to implement remove_all by themself. +// - Delete is idempotent. +// - Successful delete always return nil error. +// - Delete SHOULD never return `ObjectNotExist` +// - Delete DON'T NEED to check the object exist or not. +// +// This function will create a context by default. +func (s *Storage) Delete(path string, pairs ...Pair) (err error) { + ctx := context.Background() + return s.DeleteWithContext(ctx, path, pairs...) +} + +// DeleteWithContext will delete an object from service. +// +// ## Behavior +// +// - Delete only delete one and only one object. +// - Service DON'T NEED to support remove all. +// - User NEED to implement remove_all by themself. +// - Delete is idempotent. +// - Successful delete always return nil error. +// - Delete SHOULD never return `ObjectNotExist` +// - Delete DON'T NEED to check the object exist or not. +func (s *Storage) DeleteWithContext(ctx context.Context, path string, pairs ...Pair) (err error) { + defer func() { + err = s.formatError("delete", err, path) + }() + + pairs = append(pairs, s.defaultPairs.Delete...) + var opt pairStorageDelete + + opt, err = s.parsePairStorageDelete(pairs) + if err != nil { + return + } + + return s.delete(ctx, path, opt) +} + +// Fetch will fetch from a given url to path. +// +// ## Behavior +// +// - Fetch SHOULD NOT return an error as the object exists. +// - A successful fetch operation should be complete, which means the object's content and metadata should be the same as requiring from the url. +// +// This function will create a context by default. +func (s *Storage) Fetch(path string, url string, pairs ...Pair) (err error) { + ctx := context.Background() + return s.FetchWithContext(ctx, path, url, pairs...) +} + +// FetchWithContext will fetch from a given url to path. +// +// ## Behavior +// +// - Fetch SHOULD NOT return an error as the object exists. +// - A successful fetch operation should be complete, which means the object's content and metadata should be the same as requiring from the url. +func (s *Storage) FetchWithContext(ctx context.Context, path string, url string, pairs ...Pair) (err error) { + defer func() { + err = s.formatError("fetch", err, path, url) + }() + + pairs = append(pairs, s.defaultPairs.Fetch...) + var opt pairStorageFetch + + opt, err = s.parsePairStorageFetch(pairs) + if err != nil { + return + } + + return s.fetch(ctx, path, url, opt) +} + +// List will return list a specific path. +// +// ## Behavior +// +// - Service SHOULD support default `ListMode`. +// - Service SHOULD implement `ListModeDir` without the check for `VirtualDir`. +// - Service DON'T NEED to `Stat` while in `List`. +// +// This function will create a context by default. +func (s *Storage) List(path string, pairs ...Pair) (oi *ObjectIterator, err error) { + ctx := context.Background() + return s.ListWithContext(ctx, path, pairs...) +} + +// ListWithContext will return list a specific path. +// +// ## Behavior +// +// - Service SHOULD support default `ListMode`. +// - Service SHOULD implement `ListModeDir` without the check for `VirtualDir`. +// - Service DON'T NEED to `Stat` while in `List`. +func (s *Storage) ListWithContext(ctx context.Context, path string, pairs ...Pair) (oi *ObjectIterator, err error) { + defer func() { + err = s.formatError("list", err, path) + }() + + pairs = append(pairs, s.defaultPairs.List...) + var opt pairStorageList + + opt, err = s.parsePairStorageList(pairs) + if err != nil { + return + } + + return s.list(ctx, path, opt) +} + +// ListMultipart will list parts belong to this multipart. +// +// This function will create a context by default. +func (s *Storage) ListMultipart(o *Object, pairs ...Pair) (pi *PartIterator, err error) { + ctx := context.Background() + return s.ListMultipartWithContext(ctx, o, pairs...) +} + +// ListMultipartWithContext will list parts belong to this multipart. +func (s *Storage) ListMultipartWithContext(ctx context.Context, o *Object, pairs ...Pair) (pi *PartIterator, err error) { + defer func() { + err = s.formatError("list_multipart", err) + }() + if !o.Mode.IsPart() { + err = services.ObjectModeInvalidError{Expected: ModePart, Actual: o.Mode} + return + } + + pairs = append(pairs, s.defaultPairs.ListMultipart...) + var opt pairStorageListMultipart + + opt, err = s.parsePairStorageListMultipart(pairs) + if err != nil { + return + } + + return s.listMultipart(ctx, o, opt) +} + +// Metadata will return current storager metadata. +// +// This function will create a context by default. +func (s *Storage) Metadata(pairs ...Pair) (meta *StorageMeta) { + pairs = append(pairs, s.defaultPairs.Metadata...) + var opt pairStorageMetadata + + // Ignore error while handling local funtions. + opt, _ = s.parsePairStorageMetadata(pairs) + + return s.metadata(opt) +} + +// Move will move an object in the service. +// +// ## Behavior +// +// - Move only move one and only one object. +// - Service DON'T NEED to support move a non-empty directory. +// - User NEED to implement move a non-empty directory by themself. +// - Move a file to a directory SHOULD return `ErrObjectModeInvalid`. +// - Move SHOULD NOT return an error as dst object exists. +// - Service that has native support for `overwrite` doesn't NEED to check the dst object exists or not. +// - Service that doesn't have native support for `overwrite` SHOULD check and delete the dst object if exists. +// - A successful move operation SHOULD be complete, which means the dst object's content and metadata should be the same as src object. +// +// This function will create a context by default. +func (s *Storage) Move(src string, dst string, pairs ...Pair) (err error) { + ctx := context.Background() + return s.MoveWithContext(ctx, src, dst, pairs...) +} + +// MoveWithContext will move an object in the service. +// +// ## Behavior +// +// - Move only move one and only one object. +// - Service DON'T NEED to support move a non-empty directory. +// - User NEED to implement move a non-empty directory by themself. +// - Move a file to a directory SHOULD return `ErrObjectModeInvalid`. +// - Move SHOULD NOT return an error as dst object exists. +// - Service that has native support for `overwrite` doesn't NEED to check the dst object exists or not. +// - Service that doesn't have native support for `overwrite` SHOULD check and delete the dst object if exists. +// - A successful move operation SHOULD be complete, which means the dst object's content and metadata should be the same as src object. +func (s *Storage) MoveWithContext(ctx context.Context, src string, dst string, pairs ...Pair) (err error) { + defer func() { + err = s.formatError("move", err, src, dst) + }() + + pairs = append(pairs, s.defaultPairs.Move...) + var opt pairStorageMove + + opt, err = s.parsePairStorageMove(pairs) + if err != nil { + return + } + + return s.move(ctx, src, dst, opt) +} + +// Reach will provide a way, which can reach the object. +// +// This function will create a context by default. +func (s *Storage) Reach(path string, pairs ...Pair) (url string, err error) { + ctx := context.Background() + return s.ReachWithContext(ctx, path, pairs...) +} + +// ReachWithContext will provide a way, which can reach the object. +func (s *Storage) ReachWithContext(ctx context.Context, path string, pairs ...Pair) (url string, err error) { + defer func() { + err = s.formatError("reach", err, path) + }() + + pairs = append(pairs, s.defaultPairs.Reach...) + var opt pairStorageReach + + opt, err = s.parsePairStorageReach(pairs) + if err != nil { + return + } + + return s.reach(ctx, path, opt) +} + +// Read will read the file's data. +// +// This function will create a context by default. +func (s *Storage) Read(path string, w io.Writer, pairs ...Pair) (n int64, err error) { + ctx := context.Background() + return s.ReadWithContext(ctx, path, w, pairs...) +} + +// ReadWithContext will read the file's data. +func (s *Storage) ReadWithContext(ctx context.Context, path string, w io.Writer, pairs ...Pair) (n int64, err error) { + defer func() { + err = s.formatError("read", err, path) + }() + + pairs = append(pairs, s.defaultPairs.Read...) + var opt pairStorageRead + + opt, err = s.parsePairStorageRead(pairs) + if err != nil { + return + } + + return s.read(ctx, path, w, opt) +} + +// Stat will stat a path to get info of an object. +// +// ## Behavior +// +// - Stat SHOULD accept ObjectMode pair as hints. +// - Service COULD have different implementations for different object mode. +// - Service SHOULD check if returning ObjectMode is match +// +// This function will create a context by default. +func (s *Storage) Stat(path string, pairs ...Pair) (o *Object, err error) { + ctx := context.Background() + return s.StatWithContext(ctx, path, pairs...) +} + +// StatWithContext will stat a path to get info of an object. +// +// ## Behavior +// +// - Stat SHOULD accept ObjectMode pair as hints. +// - Service COULD have different implementations for different object mode. +// - Service SHOULD check if returning ObjectMode is match +func (s *Storage) StatWithContext(ctx context.Context, path string, pairs ...Pair) (o *Object, err error) { + defer func() { + err = s.formatError("stat", err, path) + }() + + pairs = append(pairs, s.defaultPairs.Stat...) + var opt pairStorageStat + + opt, err = s.parsePairStorageStat(pairs) + if err != nil { + return + } + + return s.stat(ctx, path, opt) +} + +// Write will write data into a file. +// +// ## Behavior +// +// - Write SHOULD NOT return an error as the object exist. +// - Service that has native support for `overwrite` doesn't NEED to check the object exists or not. +// - Service that doesn't have native support for `overwrite` SHOULD check and delete the object if exists. +// - A successful write operation SHOULD be complete, which means the object's content and metadata should be the same as specified in write request. +// +// This function will create a context by default. +func (s *Storage) Write(path string, r io.Reader, size int64, pairs ...Pair) (n int64, err error) { + ctx := context.Background() + return s.WriteWithContext(ctx, path, r, size, pairs...) +} + +// WriteWithContext will write data into a file. +// +// ## Behavior +// +// - Write SHOULD NOT return an error as the object exist. +// - Service that has native support for `overwrite` doesn't NEED to check the object exists or not. +// - Service that doesn't have native support for `overwrite` SHOULD check and delete the object if exists. +// - A successful write operation SHOULD be complete, which means the object's content and metadata should be the same as specified in write request. +func (s *Storage) WriteWithContext(ctx context.Context, path string, r io.Reader, size int64, pairs ...Pair) (n int64, err error) { + defer func() { + err = s.formatError("write", err, path) + }() + + pairs = append(pairs, s.defaultPairs.Write...) + var opt pairStorageWrite + + opt, err = s.parsePairStorageWrite(pairs) + if err != nil { + return + } + + return s.write(ctx, path, r, size, opt) +} + +// WriteAppend will append content to an append object. +// +// This function will create a context by default. +func (s *Storage) WriteAppend(o *Object, r io.Reader, size int64, pairs ...Pair) (n int64, err error) { + ctx := context.Background() + return s.WriteAppendWithContext(ctx, o, r, size, pairs...) +} + +// WriteAppendWithContext will append content to an append object. +func (s *Storage) WriteAppendWithContext(ctx context.Context, o *Object, r io.Reader, size int64, pairs ...Pair) (n int64, err error) { + defer func() { + err = s.formatError("write_append", err) + }() + if !o.Mode.IsAppend() { + err = services.ObjectModeInvalidError{Expected: ModeAppend, Actual: o.Mode} + return + } + + pairs = append(pairs, s.defaultPairs.WriteAppend...) + var opt pairStorageWriteAppend + + opt, err = s.parsePairStorageWriteAppend(pairs) + if err != nil { + return + } + + return s.writeAppend(ctx, o, r, size, opt) +} + +// WriteMultipart will write content to a multipart. +// +// This function will create a context by default. +func (s *Storage) WriteMultipart(o *Object, r io.Reader, size int64, index int, pairs ...Pair) (n int64, part *Part, err error) { + ctx := context.Background() + return s.WriteMultipartWithContext(ctx, o, r, size, index, pairs...) +} + +// WriteMultipartWithContext will write content to a multipart. +func (s *Storage) WriteMultipartWithContext(ctx context.Context, o *Object, r io.Reader, size int64, index int, pairs ...Pair) (n int64, part *Part, err error) { + defer func() { + err = s.formatError("write_multipart", err) + }() + if !o.Mode.IsPart() { + err = services.ObjectModeInvalidError{Expected: ModePart, Actual: o.Mode} + return + } + + pairs = append(pairs, s.defaultPairs.WriteMultipart...) + var opt pairStorageWriteMultipart + + opt, err = s.parsePairStorageWriteMultipart(pairs) + if err != nil { + return + } + + return s.writeMultipart(ctx, o, r, size, index, opt) +} + +func init() { + services.RegisterServicer(Type, NewServicer) + services.RegisterStorager(Type, NewStorager) + services.RegisterSchema(Type, pairMap) +} diff --git a/cmd/definitions/tests/service.go b/tests/service.go similarity index 100% rename from cmd/definitions/tests/service.go rename to tests/service.go diff --git a/cmd/definitions/tests/service.toml b/tests/service.toml similarity index 100% rename from cmd/definitions/tests/service.toml rename to tests/service.toml diff --git a/cmd/definitions/tests/storage.go b/tests/storage.go similarity index 99% rename from cmd/definitions/tests/storage.go rename to tests/storage.go index c07dc164e..8965f0d7f 100644 --- a/cmd/definitions/tests/storage.go +++ b/tests/storage.go @@ -77,7 +77,7 @@ func (s *Storage) read(ctx context.Context, path string, w io.Writer, opt pairSt } func (s *Storage) stat(ctx context.Context, path string, opt pairStorageStat) (o *Object, err error) { - panic("not implemented") + return nil, nil } func (s *Storage) write(ctx context.Context, path string, r io.Reader, size int64, opt pairStorageWrite) (n int64, err error) { diff --git a/tests/storager_bench_test.go b/tests/storager_bench_test.go new file mode 100644 index 000000000..db46b7ff9 --- /dev/null +++ b/tests/storager_bench_test.go @@ -0,0 +1,14 @@ +package tests + +import "testing" + +func BenchmarkStorage_Stat(b *testing.B) { + s, err := NewStorager() + if err != nil { + b.Fatal(err) + } + + for i := 0; i < b.N; i++ { + _, _ = s.Stat("abc") + } +} diff --git a/cmd/definitions/tests/utils.go b/tests/utils.go similarity index 92% rename from cmd/definitions/tests/utils.go rename to tests/utils.go index 160493a6f..0639b7c78 100644 --- a/cmd/definitions/tests/utils.go +++ b/tests/utils.go @@ -11,7 +11,7 @@ func (s *Service) String() string { } func (s *Storage) formatError(op string, err error, args ...string) error { - panic("not implemented") + return nil } func (s *Storage) String() string { @@ -23,5 +23,5 @@ func NewServicer(pairs ...typ.Pair) (typ.Servicer, error) { } func NewStorager(pairs ...typ.Pair) (typ.Storager, error) { - return nil, nil + return &Storage{}, nil }